Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой записной книжке вы создадите программу для прогнозирования данных временных рядов с сезонными циклами. Используйте набор данных NYC Property Sales с датами от 2003 до 2015 года, опубликованной Департаментом финансов Нью-Йорка на портале NYC Open Data Portal.
Предварительные требования
Получите подписку Microsoft Fabric. Или зарегистрируйте бесплатную пробную версию Microsoft Fabric.
Войдите в Microsoft Fabric.
Перейдите в Fabric с помощью переключателя интерфейса в левой нижней части домашней страницы.
- Знакомство с записными книжками Microsoft Fabric.
- Lakehouse для хранения данных в данном примере. Для получения дополнительной информации см. раздел «Добавление Lakehouse в записную книжку».
Следуйте инструкциям в записной книжке
Вы можете следовать в записной книжке одним из двух способов:
- Откройте и запустите встроенную записную книжку.
- Отправьте записную книжку из GitHub.
Открытие встроенной записной книжки
Пример записной книжки Time Series поставляется с этим руководством.
Чтобы открыть образец блокнота для этого учебного пособия, следуйте инструкциям в Подготовка системы для учебников по обработке и анализу данных.
Перед началом выполнения кода обязательно подключите хранилище данных (lakehouse) к записной книжке.
Импорт записной книжки из GitHub
AIsample — Прогноз временных рядов.ipynb — это записная книжка, сопровождающая это руководство.
Чтобы открыть сопровождающий блокнот для этого руководства, следуйте инструкциям в подготовьте вашу систему для учебников по обработке и анализу данных для импорта блокнота в ваше рабочее пространство.
Если вы хотите скопировать и вставить код на этой странице, можно создать новую записную книжку.
Перед запуском кода обязательно подключите lakehouse к записной книжке .
Шаг 1. Установка пользовательских библиотек
При разработке модели machine learning или обработке нерегламентированного анализа данных может потребоваться быстро установить пользовательскую библиотеку (например, prophet в этой записной книжке) для сеанса Apache Spark. Для выполнения этой задачи у вас есть два варианта.
- Используйте встроенные возможности установки (например,
%pip,%condaи т. д.), чтобы быстро начать работу с новыми библиотеками. Этот метод устанавливает пользовательские библиотеки только в текущей записной книжке, а не в рабочей области.
# Use pip to install libraries
%pip install <library name>
# Use conda to install libraries
%conda install <library name>
- Кроме того, создайте среду Fabric, установите библиотеки из общедоступных источников или отправьте в нее пользовательские библиотеки. Администратор рабочей области может присоединить среду в качестве значения по умолчанию для рабочей области. Все библиотеки в среде становятся доступными для использования в любых записных книжках и определениях заданий Spark в рабочей области. Для получения дополнительной информации о средах см. раздел создание, настройка и использование среды в Microsoft Fabric.
Для этой записной книжки используйте %pip install для установки библиотеки prophet. Ядро PySpark перезапускается после %pip install. Это действие означает, что перед запуском любых других ячеек необходимо установить библиотеку.
# Use pip to install Prophet
%pip install prophet
Шаг 2. Загрузка данных
Набор данных
Эта записная книжка использует набор данных NYC Property Sales. Он охватывает данные с 2003 по 2015 год, опубликованные Департаментом нью-йорка Finance на портале NYC Open Data Portal.
Набор данных включает запись каждой продажи зданий на рынке недвижимости Нью-Йорка в течение 13-летнего периода. Для определения столбцов в наборе данных см. Глоссарий терминов для файлов продаж недвижимости.
| район | район | категория класса здания | класс_налога | блок | много | восточная часть | класс_здания_в_настоящее_время | адрес | номер квартиры | zip_code | жилые единицы | коммерческие единицы | общее количество единиц | площадь_квадратные_футы | общая площадь в квадратных футах | год постройки | налоговая категория на момент продажи | класс_здания_на_момент_продажи | цена продажи | дата_продажи |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Manhattan | АЛФАВИТНЫЙ ГОРОД | 07 АРЕНДА - КВАРТИРЫ БЕЗ ЛИФТА | 0,0 | 384,0 | 17,0 | C4 | 225 EAST 2ND STREET | 10009.0 | 10.0 | 0,0 | 10.0 | 2145.0 | 6670.0 | 1900.0 | 2.0 | C4 | 275000.0 | 2007-06-19 | ||
| Manhattan | АЛФАВИТНЫЙ ГОРОД | 07 АРЕНДА - КВАРТИРЫ БЕЗ ЛИФТА | 2.0 | 405.0 | 12,0 | C7 | 508 EAST 12TH STREET | 10009.0 | 28,0 | 2.0 | 30,0 | 3872.0 | 15428.0 | 1930.0 | 2.0 | C7 | 7 794 005,0 | 2007-05-21 |
Цель заключается в создании модели, которая прогнозирует ежемесячный общий объем продаж на основе исторических данных. Для этого используется Prophet, библиотека прогнозирования open source, разработанная Facebook. Prophet основан на аддитивной модели, где нелинейные тренды моделируются с учетом ежедневной, еженедельной и ежегодной сезонности, а также влияний праздников. Prophet лучше всего работает с наборами данных временных рядов, которые имеют сильные сезонные эффекты и содержат несколько сезонов исторических данных. Кроме того, Пророк надежно обрабатывает отсутствующие данные и выпадающие данные.
Пророк использует разложенную модель временных рядов, состоящую из трех компонентов:
- тенденция: Prophet предполагает кусочно-постоянную скорость роста с автоматической выборкой точки изменения.
- сезонность: По умолчанию Пророк использует Фурье серии для соответствия еженедельной и ежегодной сезонности
- праздники: Пророк требует всех прошлых и будущих праздников. Если праздник не повторяется в будущем, Пророк не будет включать его в прогноз.
Эта записная книжка объединяет данные ежемесячно, поэтому пропускает праздники.
Прочитайте официальный документ для получения дополнительной информации о методах моделирования Prophet.
Скачайте набор данных и загрузите его в lakehouse.
Источник данных состоит из 15 .csv файлов. Эти файлы содержат записи о продажах недвижимости из пяти районов в Нью-Йорке за период с 2003 по 2015 годы. Для удобства nyc_property_sales.tar файл содержит все эти .csv файлы, сжимая их в один файл. Общедоступное хранилище Blob размещает этот файл .tar.
Совет
Используя параметры, показанные в этой ячейке кода, можно легко применить эту записную книжку к разным наборам данных.
URL = "https://synapseaisolutionsa.z13.web.core.windows.net/data/NYC_Property_Sales_Dataset/"
TAR_FILE_NAME = "nyc_property_sales.tar"
DATA_FOLDER = "Files/NYC_Property_Sales_Dataset"
TAR_FILE_PATH = f"/lakehouse/default/{DATA_FOLDER}/tar/"
CSV_FILE_PATH = f"/lakehouse/default/{DATA_FOLDER}/csv/"
EXPERIMENT_NAME = "aisample-timeseries" # MLflow experiment name
Этот код загружает общедоступную версию набора данных, а затем сохраняет этот набор данных в Fabric Lakehouse.
Внимание
Перед запуском записной книжки убедитесь, что вы добавите lakehouse к записной книжке. Если вы этого не сделаете, возникнет ошибка.
import os
if not os.path.exists("/lakehouse/default"):
# Add a lakehouse if the notebook has no default lakehouse
# A new notebook will not link to any lakehouse by default
raise FileNotFoundError(
"Default lakehouse not found, please add a lakehouse for the notebook."
)
else:
# Verify whether or not the required files are already in the lakehouse, and if not, download and unzip
if not os.path.exists(f"{TAR_FILE_PATH}{TAR_FILE_NAME}"):
os.makedirs(TAR_FILE_PATH, exist_ok=True)
os.system(f"wget {URL}{TAR_FILE_NAME} -O {TAR_FILE_PATH}{TAR_FILE_NAME}")
os.makedirs(CSV_FILE_PATH, exist_ok=True)
os.system(f"tar -zxvf {TAR_FILE_PATH}{TAR_FILE_NAME} -C {CSV_FILE_PATH}")
Начните запись времени выполнения этой программы в записной книжке.
# Record the notebook running time
import time
ts = time.time()
Настройка отслеживания экспериментов MLflow
Чтобы расширить возможности ведения журнала MLflow, автоматическое ведение журнала автоматически записывает значения входных параметров и выходных метрик модели machine learning во время обучения. Затем эти сведения записываются в рабочую область, где API MLflow или соответствующий эксперимент в рабочей области могут получить к ним доступ и визуализировать их. Дополнительные сведения об Autologging см. в разделе Autologging в Microsoft Fabric.
# Set up the MLflow experiment
import mlflow
mlflow.set_experiment(EXPERIMENT_NAME)
mlflow.autolog(disable=True) # Disable MLflow autologging
Примечание.
Чтобы отключить автоматическое логирование Microsoft Fabric в сеансе записной книжки, вызовите mlflow.autolog() и задайте disable=True.
Чтение необработанных данных даты из lakehouse
df = (
spark.read.format("csv")
.option("header", "true")
.load("Files/NYC_Property_Sales_Dataset/csv")
)
Шаг 3. Начало анализа аналитических данных
Чтобы просмотреть набор данных, вручную изучите подмножество данных, чтобы лучше понять его. Используйте функцию display для печати кадра данных. Можно также отобразить представления диаграммы, чтобы легко визуализировать подмножества набора данных.
display(df)
Проверка набора данных вручную приводит к некоторым ранним наблюдениям:
Случаи продажи по цене 0,00 долл. США. Согласно "Glossary of Terms", это значение подразумевает передачу владения без денежного возмещения. Другими словами, денежные средства в транзакции не перетекаются. Удалите продажи со значениями $0,00
sales_priceиз набора данных.Набор данных охватывает различные классы зданий. Однако эта записная книжка будет сосредоточена на жилых зданиях, которые, согласно Глоссарию терминов, отмечены как тип «A». Отфильтруйте набор данных, чтобы включить только жилые здания. Для этого включите либо
building_class_at_time_of_sale, либоbuilding_class_at_presentстолбцы. Включайте только данныеbuilding_class_at_time_of_sale.Набор данных содержит экземпляры, в которых
total_unitsзначения равны 0 илиgross_square_feetзначения равны 0. Удалите все экземпляры, гдеtotal_unitsилиgross_square_unitsзначения равны 0.Некоторые столбцы , например,
apartment_number,tax_classbuild_class_at_presentи другие , имеют отсутствующие или NULL-значения. Предположим, что отсутствующие данные включают ошибки в документации или несуществующие данные. Анализ не зависит от этих отсутствующих значений, поэтому их можно игнорировать.Столбец
sale_priceхранится в виде строки с предустановленным символом "$". Чтобы продолжить анализ, введите этот столбец в виде числа. Преобразуйте столбецsale_priceв целое число.
Преобразование типов и фильтрация
Чтобы устранить некоторые выявленные проблемы, импортируйте необходимые библиотеки.
# Import libraries
import pyspark.sql.functions as F
from pyspark.sql.types import *
Приведение данных о продажах из строки в целое число
Используйте регулярные выражения, чтобы разделить числовую часть строки от знака доллара (например, в строке $300,000, разделить $ и 300,000), а затем привести числовую часть как целое число.
Затем отфильтруйте данные, чтобы включить только экземпляры, соответствующие всем этим условиям:
-
sales_priceбольше 0. -
total_unitsбольше 0. -
gross_square_feetбольше 0. -
building_class_at_time_of_saleявляется типом A.
df = df.withColumn(
"sale_price", F.regexp_replace("sale_price", "[$,]", "").cast(IntegerType())
)
df = df.select("*").where(
'sale_price > 0 and total_units > 0 and gross_square_feet > 0 and building_class_at_time_of_sale like "A%"'
)
Агрегирование на ежемесячной основе
Ресурс данных отслеживает продажи недвижимости ежедневно, но этот подход слишком детализирован для этого блокнота. Вместо этого агрегировать данные ежемесячно.
Сначала измените значения дат, чтобы отобразить только данные месяца и года. Значения дат по-прежнему содержат информацию о годе. Вы по-прежнему можете различать, например, декабрь 2005 г. и декабрь 2006 г.
Кроме того, сохраняйте только столбцы, относящиеся к анализу. К этим столбцам относятся sales_price, total_unitsи gross_square_feetsales_date. Необходимо также переименовать sales_date на month.
monthly_sale_df = df.select(
"sale_price",
"total_units",
"gross_square_feet",
F.date_format("sale_date", "yyyy-MM").alias("month"),
)
display(monthly_sale_df)
sale_price, total_units и gross_square_feet значения агрегировать по месяцам. Затем сгруппируйте данные по month и суммируйте все значения в каждой группе.
summary_df = (
monthly_sale_df.groupBy("month")
.agg(
F.sum("sale_price").alias("total_sales"),
F.sum("total_units").alias("units"),
F.sum("gross_square_feet").alias("square_feet"),
)
.orderBy("month")
)
display(summary_df)
Преобразование Pyspark в Pandas
Pyspark DataFrames эффективно управляют большими наборами данных. Однако из-за агрегирования данных размер DataFrame меньше. Теперь можно использовать pandas DataFrame.
Этот код преобразует набор данных из DataFrame PySpark в DataFrame Pandas.
import pandas as pd
df_pandas = summary_df.toPandas()
display(df_pandas)
Визуализация
Вы можете изучить тенденцию торговли недвижимостью в Нью-Йорке, чтобы лучше понять данные. Этот анализ приводит к анализу потенциальных закономерностей и тенденций сезонности. Дополнительные сведения о визуализации данных Microsoft Fabric см. в ресурсе Notebook visualization.
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
f, (ax1, ax2) = plt.subplots(2, 1, figsize=(35, 10))
plt.sca(ax1)
plt.xticks(np.arange(0, 15 * 12, step=12))
plt.ticklabel_format(style="plain", axis="y")
sns.lineplot(x="month", y="total_sales", data=df_pandas)
plt.ylabel("Total Sales")
plt.xlabel("Time")
plt.title("Total Property Sales by Month")
plt.sca(ax2)
plt.xticks(np.arange(0, 15 * 12, step=12))
plt.ticklabel_format(style="plain", axis="y")
sns.lineplot(x="month", y="square_feet", data=df_pandas)
plt.ylabel("Total Square Feet")
plt.xlabel("Time")
plt.title("Total Property Square Feet Sold by Month")
plt.show()
Сводка наблюдений по исследовательскому анализу данных
- Данные показывают четкий повторяющийся шаблон по ежегодной периодичностью, что означает, что данные имеют годовую сезонность.
- Летние месяцы, как представляется, имеют более высокие объемы продаж по сравнению с зимними месяцами.
- При сравнении лет с высокими продажами и годами с низкими продажами вы видите, что разница между высокими месяцами продаж и низкими месяцами продаж в высоких годах продаж превышает - в абсолютных условиях - разница между высокими месяцами продаж и низкими месяцами продаж в низких годах продажи.
Например, в 2004 году разница между самым высоким месяцем продаж и самым низким месяцем продаж составляет примерно:
$900,000,000 - $500,000,000 = $400,000,000
В 2011 году расчет разницы доходов составляет примерно так:
$400,000,000 - $300,000,000 = $100,000,000
Это наблюдение становится важным позже, когда необходимо решить между мультипликативными и аддитивными сезонными эффектами.
Шаг 4. Обучение и отслеживание моделей
Подгонка модели
Prophet всегда принимает двухколоночный кадр данных в качестве входных данных. Один входной столбец — это столбец времени с именем ds, а другой входной столбец — это столбец значений с именем y. Столбец времени должен иметь формат данных даты, времени или даты и времени (например, YYYY_MM). Этот набор данных соответствует такому условию. Столбец значений должен быть числовым форматом данных.
Для подгонки модели переименуйте столбец времени в ds, а столбец значений в y. Затем передайте данные Пророку. Дополнительные сведения см. в документации Prophet Python API.
df_pandas["ds"] = pd.to_datetime(df_pandas["month"])
df_pandas["y"] = df_pandas["total_sales"]
Пророк — следует стандарту scikit-learn. Сначала создайте новый экземпляр Пророка, задайте определенные параметры (например,seasonality_mode и затем вместите этот экземпляр в набор данных).
Хотя постоянный аддитивный фактор является эффектом сезонности по умолчанию для Prophet, используйте "мультипликативный" эффект сезонности для параметра эффекта сезонности. Анализ в предыдущем разделе показал, что из-за изменений амплитуды сезонности простая аддитивная сезонность совсем не подходит для данных.
Задайте для параметра weekly_seasonalityзначение off, так как данные агрегируются по месяцам. В результате еженедельные данные недоступны.
Используйте методы Монте-Карло с цепями Маркова (MCMC) для учета неопределённости в оценках сезонности. По умолчанию Prophet может предоставить оценки неопределённости для тренда и шума наблюдений, но не для сезонности. MCMC требует больше времени обработки, но они позволяют алгоритму предоставлять оценки неопределенности по сезонности, а также тренд и шум наблюдения. Для получения дополнительной информации см. документацию по интервалам неопределенности Prophet .
Настройте чувствительность автоматического обнаружения точек изменения с помощью параметра changepoint_prior_scale. Алгоритм Пророка автоматически пытается найти ситуации в данных, в которых траектории резко изменяются. Найти правильное значение может быть затруднительно. Чтобы устранить эту проблему, попробуйте использовать различные значения, а затем выберите модель с оптимальной производительностью. Дополнительные сведения см. в документации Prophet Trend Changepoints.
from prophet import Prophet
def fit_model(dataframe, seasonality_mode, weekly_seasonality, chpt_prior, mcmc_samples):
m = Prophet(
seasonality_mode=seasonality_mode,
weekly_seasonality=weekly_seasonality,
changepoint_prior_scale=chpt_prior,
mcmc_samples=mcmc_samples,
)
m.fit(dataframe)
return m
Перекрестная проверка
Пророк имеет встроенный инструмент перекрестной проверки. Это средство может оценить ошибку прогнозирования и найти модель с оптимальной производительностью.
Метод перекрестной проверки может проверить эффективность модели. Этот метод обучает модель подмножества набора данных и выполняет тесты на ранее невидимом подмножестве набора данных. Этот метод может проверить, насколько хорошо статистическая модель обобщает независимый набор данных.
Для перекрестной проверки зарезервировать конкретный пример набора данных, который не был частью обучающего набора данных. Затем протестируйте обученную модель на этом образце перед развертыванием. Однако этот подход не работает для данных временных рядов. Если модель видит данные за январь 2005 года и март 2005 года, и вы пытаетесь предсказать данные за февраль 2005 года, модель может по сути обмануть, так как она видит, куда ведет тенденция данных. В реальных приложениях цель заключается в прогнозировании будущего, как невидимые регионы.
Чтобы справиться с этой проблемой и сделать тест надежным, разделите набор данных на основе дат. Используйте набор данных до определенной даты (например, первые 11 лет данных) для обучения, а затем используйте оставшиеся невидимые данные для прогнозирования.
В этом сценарии начните с 11 лет обучающих данных, а затем сделайте ежемесячные прогнозы с помощью однолетнего горизонта. В частности, данные обучения содержат все данные от 2003 до 2013 года. Затем первый запуск обрабатывает прогнозы за январь 2014 г. по январь 2015 г. Следующий запуск обрабатывает прогнозы на февраль 2014 г. по февраль 2015 г. и т. д.
Повторите этот процесс для каждой из трех обученных моделей, чтобы увидеть, какая модель работает лучше всего. Затем сравните эти прогнозы с реальными значениями, чтобы установить качество прогнозирования лучшей модели.
from prophet.diagnostics import cross_validation
from prophet.diagnostics import performance_metrics
def evaluation(m):
df_cv = cross_validation(m, initial="4017 days", period="30 days", horizon="365 days")
df_p = performance_metrics(df_cv, monthly=True)
future = m.make_future_dataframe(periods=12, freq="M")
forecast = m.predict(future)
return df_p, future, forecast
Модель журнала с MLflow
Записывайте параметры моделей и сохраняйте их для дальнейшего использования. Все соответствующие данные о модели регистрируются в рабочей области под именем эксперимента. Модель, параметры и метрики, а также элементы автологирования MLflow сохраняются в одном запуске MLflow.
# Setup MLflow
from mlflow.models.signature import infer_signature
Проведение экспериментов
Эксперимент машинного обучения служит основной единицей организации и контроля для всех связанных запусков машинного обучения. Запуск соответствует одному выполнению кода модели. Отслеживание экспериментов машинного обучения относится к управлению различными экспериментами и их компонентами. Это управление включает параметры, метрики, модели и другие артефакты. Он помогает упорядочить необходимые компоненты определенного machine learning эксперимента. Отслеживание экспериментов в машинном обучении также позволяет легко воспроизводить прошлые результаты, используя сохраненные эксперименты. Для получения дополнительной информации см. в экспериментах по машинному обучению в Microsoft Fabric. После определения шагов, которые вы планируете включить (например, настройку и оценку модели Пророка в этой записной книжке), можно запустить эксперимент.
model_name = f"{EXPERIMENT_NAME}-prophet"
models = []
df_metrics = []
forecasts = []
seasonality_mode = "multiplicative"
weekly_seasonality = False
changepoint_priors = [0.01, 0.05, 0.1]
mcmc_samples = 100
for chpt_prior in changepoint_priors:
with mlflow.start_run(run_name=f"prophet_changepoint_{chpt_prior}"):
# init model and fit
m = fit_model(df_pandas, seasonality_mode, weekly_seasonality, chpt_prior, mcmc_samples)
models.append(m)
# Validation
df_p, future, forecast = evaluation(m)
df_metrics.append(df_p)
forecasts.append(forecast)
# Log model and parameters with MLflow
mlflow.prophet.log_model(
m,
model_name,
registered_model_name=model_name,
signature=infer_signature(future, forecast),
)
mlflow.log_params(
{
"seasonality_mode": seasonality_mode,
"mcmc_samples": mcmc_samples,
"weekly_seasonality": weekly_seasonality,
"changepoint_prior": chpt_prior,
}
)
metrics = df_p.mean().to_dict()
metrics.pop("horizon")
mlflow.log_metrics(metrics)
Визуализация модели с помощью Пророка
Программа Prophet имеет встроенные функции визуализации, которые показывают результаты подгонки модели.
Черные точки представляют точки данных, обучающие модель. Синяя линия — это прогноз, а светло-голубая область показывает интервалы неопределенности. Вы создали три модели с разными changepoint_prior_scale значениями. Прогнозы этих трех моделей отображаются в результатах этого блока кода.
for idx, pack in enumerate(zip(models, forecasts)):
m, forecast = pack
fig = m.plot(forecast)
fig.suptitle(f"changepoint = {changepoint_priors[idx]}")
Наименьшее changepoint_prior_scale значение в первом графике приводит к недообучению изменений тренда. Самый большой changepoint_prior_scale в третьем графе может привести к переполнению. Таким образом, второй граф является лучшим выбором. Это означает, что вторая модель наиболее подходит.
Визуализация тенденций и сезонности с Пророком
Пророк также может легко визуализировать базовые тенденции и сезонности. Визуализации второй модели отображаются в результатах этого блока кода.
BEST_MODEL_INDEX = 1 # Set the best model index according to the previous results
fig2 = models[BEST_MODEL_INDEX].plot_components(forecast)
На данных графиках светло-синяя заливка отображает неопределенность. Верхний график показывает сильную, долговременную тенденцию колебания. В течение нескольких лет объемы продаж растут и падают. На нижнем графике показано, что продажи, как правило, пиковые в феврале и сентябре, достигают своих максимальных значений в течение этого года в эти месяцы. Вскоре после этих месяцев, в марте и октябре, они падают до минимальных значений года.
Оцените производительность моделей с помощью различных метрик, например:
- средняя квадратная ошибка (MSE)
- корень среднеквадратической ошибки (RMSE)
- средняя абсолютная ошибка (MAE)
- средняя абсолютная процентная ошибка (MAPE)
- медианная абсолютная процентная ошибка (MDAPE)
- симметричная средняя абсолютная процентная ошибка (SMAPE)
Оцените охват с помощью оценок yhat_lower и yhat_upper. Обратите внимание на различные горизонты, где вы прогнозируете один год в будущем, 12 раз.
display(df_metrics[BEST_MODEL_INDEX])
Используя метрику MAPE для этой модели прогнозирования, прогнозы на месяц вперёд обычно включают ошибки примерно 8%. Однако для прогнозов в течение одного года в будущем ошибка увеличивается примерно на 10 %.
Шаг 5. Оценка модели и сохранение результатов прогнозирования
Оценка модели и сохранение результатов прогнозирования.
Создание прогнозов с помощью Преобразователя прогнозирования
Загрузите модель и используйте ее для прогнозирования. Для работы моделей machine learning используйте функцию PREDICT, масштабируемую функцию Microsoft Fabric, которая поддерживает пакетную оценку в любом вычислительном механизме. Дополнительные сведения о PREDICT и его использовании в Microsoft Fabric см. в разделе this resource.
from synapse.ml.predict import MLFlowTransformer
spark.conf.set("spark.synapse.ml.predict.enabled", "true")
model = MLFlowTransformer(
inputCols=future.columns.values,
outputCol="prediction",
modelName=f"{EXPERIMENT_NAME}-prophet",
modelVersion=BEST_MODEL_INDEX,
)
test_spark = spark.createDataFrame(data=future, schema=future.columns.to_list())
batch_predictions = model.transform(test_spark)
display(batch_predictions)
# Code for saving predictions into lakehouse
batch_predictions.write.format("delta").mode("overwrite").save(
f"{DATA_FOLDER}/predictions/batch_predictions"
)
# Determine the entire runtime
print(f"Full run cost {int(time.time() - ts)} seconds.")
Связанный контент
- модель машинного обучения в Microsoft Fabric
- Обучение моделей машинного обучения
- Эксперименты по машинному обучению в Microsoft Fabric