OJ Sales Simulated (Смоделированные данные по продажам апельсинового сока)

Этот набор данных, который является производным от набора данных Dominick’s OJ и содержит дополнительные смоделированные данные, был создан для одновременного обучения тысяч моделей в службе "Машинное обучение Azure".

Примечание.

Корпорация Майкрософт предоставляет Открытые наборы данных Azure как есть. Корпорация Майкрософт не предоставляет никаких гарантий (явных или подразумеваемых) и не определяет никаких условий в связи с использованием этих наборов данных. В рамках, допускаемых местным законодательством, корпорация Майкрософт отказывается от ответственности за ущерб и убытки (в том числе прямые, косвенные, специальные, опосредованные, случайные и штрафные), понесенные в результате использования вами этих наборов данных.

Этот набор данных предоставляется на тех же условиях, на которых корпорация Майкрософт получила исходные данные. Этот набор может включать данные, полученные от корпорации Майкрософт.

Он содержит сведения о недельном объеме продаж апельсинового сока за 121 неделю. В набор включены данные по 3991 магазину и трем торговым маркам апельсинового сока на каждый магазин. Это значит, что обучить можно 11 973 модели.

Просмотрите исходное описание набора данных или скачайте набор.

Столбцы

Имя. Тип данных Уникальный Значения (пример) Description
Advert INT 1 Значение, указывающее, были ли рекламные объявления для этого апельсинового сока в течение недели: 0 — объявлений нет, 1 — объявления есть.
Марка строка dominicks tropicana Торговая марка апельсинового сока
Цена, двойной точности 2,6 2,09 Цена апельсинового сока (в долларах США)
Количество INT 10939 11638 Объем апельсинового сока, проданного за эту неделю
Выручка двойной точности 38438,4 36036,0 Прибыль от продаж апельсинового сока за эту неделю (в долларах США)
Store (Сохранить) INT 2658 1396 Номер магазина, в котором продавался апельсиновый сок
Начало недели TIMESTAMP 1990-08-09 00:00:00 1992-02-20 00:00:00 Дата, указывающая, к какой неделе относятся продажи

Предварительная версия

Начало недели Store (Сохранить) Марка Количество Advert Цена, Выручка
10/1/1992 12:00:00 AM 3571 minute.maid 13247 1 2,42 32057,74
10/1/1992 12:00:00 AM 2999 minute.maid 18461 1 2.69 49660,09
10/1/1992 12:00:00 AM 1198 minute.maid 13222 1 2.64 34906,08
10/1/1992 12:00:00 AM 3916 minute.maid 12923 1 2.45 31661,35
10/1/1992 12:00:00 AM 1688 minute.maid 9380 1 2,46 23074,8
10/1/1992 12:00:00 AM 1040 minute.maid 18841 1 2,31 43522,71
10/1/1992 12:00:00 AM 1938 minute.maid 14202 1 2,19 31102,38
10/1/1992 12:00:00 AM 2405 minute.maid 16326 1 2.05 33468,3
10/1/1992 12:00:00 AM 1972 minute.maid 16380 1 2.12 34725,6

Доступ к данным

Записные книжки Azure

from azureml.core.workspace import Workspace
ws = Workspace.from_config()
datastore = ws.get_default_datastore()
from azureml.opendatasets import OjSalesSimulated

Считывание данных из Открытых наборов данных Azure

# Create a Data Directory in local path
import os

oj_sales_path = "oj_sales_data"

if not os.path.exists(oj_sales_path):
    os.mkdir(oj_sales_path)
# Pull all of the data
oj_sales_files = OjSalesSimulated.get_file_dataset()

# or pull a subset of the data
oj_sales_files = OjSalesSimulated.get_file_dataset(num_files=10)
oj_sales_files.download(oj_sales_path, overwrite=True)

Отправка отдельных наборов данных в Хранилище BLOB-объектов

Мы отправим данные в хранилище больших двоичных объектов и создадим FileDataset из этой папки с CSV-файлами.

target_path = 'oj_sales_data'

datastore.upload(src_dir = oj_sales_path,
                target_path = target_path,
                overwrite = True, 
                show_progress = True)

Создание файлового набора данных

Чтобы создать FileDataset, необходимо задать путь к данным.

from azureml.core.dataset import Dataset

ds_name = 'oj_data'
path_on_datastore = datastore.path(target_path + '/')

input_ds = Dataset.File.from_files(path=path_on_datastore, validate=False)

Регистрация файлового набора данных в рабочей области

Нам нужно зарегистрировать набор данных в рабочей области, чтобы его можно было передавать на вход в конвейер для прогнозирования.

registered_ds = input_ds.register(ws, ds_name, create_new_version=True)
named_ds = registered_ds.as_named_input(ds_name)

Azure Databricks

# This is a package in preview.
# You need to pip install azureml-opendatasets in Databricks cluster. https://learn.microsoft.com/azure/data-explorer/connect-from-databricks#install-the-python-library-on-your-azure-databricks-cluster
# Download or mount OJ Sales raw files Azure Machine Learning file datasets.
# This works only for Linux based compute. See https://learn.microsoft.com/azure/machine-learning/service/how-to-create-register-datasets to learn more about datasets.

from azureml.opendatasets import OjSalesSimulated

ojss_file = OjSalesSimulated.get_file_dataset()
ojss_file
ojss_file.to_path()
# Download files to local storage
import os
import tempfile

mount_point = tempfile.mkdtemp()
ojss_file.download(mount_point, overwrite=True)
# Mount files. Useful when training job will run on a remote compute.
import gzip
import struct
import pandas as pd
import numpy as np

# load compressed OJ Sales Simulated gz files and return numpy arrays
def load_data(filename, label=False):
    with gzip.open(filename) as gz:
        gz.read(4)
        n_items = struct.unpack('>I', gz.read(4))
        if not label:
            n_rows = struct.unpack('>I', gz.read(4))[0]
            n_cols = struct.unpack('>I', gz.read(4))[0]
            res = np.frombuffer(gz.read(n_items[0] * n_rows * n_cols), dtype=np.uint8)
            res = res.reshape(n_items[0], n_rows * n_cols)
        else:
            res = np.frombuffer(gz.read(n_items[0]), dtype=np.uint8)
            res = res.reshape(n_items[0], 1)
    return pd.DataFrame(res)
import sys
mount_point = tempfile.mkdtemp()
print(mount_point)
print(os.path.exists(mount_point))
print(os.listdir(mount_point))

if sys.platform == 'linux':
  print("start mounting....")
  with ojss_file.mount(mount_point):
    print(os.listdir(mount_point))  
    train_images_df = load_data(os.path.join(mount_point, 'train-tabular-oj-ubyte.gz'))
    print(train_images_df.info())

Следующие шаги

Ознакомьтесь с другими наборами в каталоге Открытых наборов данных.