Поделиться через


Руководство, часть 4: Выполнение пакетной оценки и сохранение прогнозов в хранилище данных (lakehouse)

В этом руководстве вы узнаете, как импортировать зарегистрированную модель LightGBMClassifier, которая была обучена в части 3 с помощью реестра моделей Microsoft Fabric MLflow, и выполнить пакетные прогнозы в тестовом наборе данных, загруженном из lakehouse.

Microsoft Fabric позволяет использовать модели машинного обучения с масштабируемой функцией PREDICT, которая поддерживает пакетную оценку в любом вычислительном механизме. Вы можете создавать пакетные прогнозы непосредственно из записной книжки Microsoft Fabric или со страницы модели. Узнайте о PREDICT.

Чтобы создать пакетные прогнозы в тестовом наборе данных, вы будете использовать версию 1 обученной модели LightGBM, которая продемонстрировала лучшую производительность среди всех обученных моделей машинного обучения. Вы загрузите тестовый набор данных в DataFrame Spark и создадите объект MLFlowTransformer для генерации пакетных прогнозов. Затем можно вызвать функцию PREDICT с помощью одного из следующих трех способов:

  • API преобразователя из SynapseML
  • Spark SQL API
  • Определяемая пользователем функция PySpark (UDF)

Необходимые условия

  • Получите подписку Microsoft Fabric. Зарегистрируйтесь на бесплатную пробную версию Microsoft Fabric или воспользуйтесь .

  • Войдите в Microsoft Fabric.

  • Используйте переключатель интерфейса в левой нижней части домашней страницы, чтобы перейти на Fabric.

    снимок экрана меню переключателя режимов, в котором показано, где выбрать Data Science.

Эта часть 4 из 5 в учебной серии. Чтобы завершить работу с этим руководством, сначала выполните указанные ниже действия.

Следуйте инструкциям в записной книжке

4-predict.ipynb — это записная книжка, сопровождающая это руководство.

Важный

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

Загрузка тестовых данных

Загрузите тестовые данные, сохраненные в части 3.

df_test = spark.read.format("delta").load("Tables/df_test")
display(df_test)

PREDICT с помощью API Transformer

Чтобы использовать API преобразователя из SynapseML, необходимо сначала создать объект MLFlowTransformer.

Создание экземпляра объекта MLFlowTransformer

Объект MLFlowTransformer — это оболочка для модели MLFlow, зарегистрированной в части 3. Он позволяет создавать пакетные прогнозы на заданном кадре данных. Чтобы создать экземпляр объекта MLFlowTransformer, необходимо указать следующие параметры:

  • Столбцы из тестового кадра данных, которые вам нужны в качестве входных данных для модели (в этом случае вам потребуются все они).
  • Имя нового выходного столбца (в данном случае прогнозы).
  • Правильное имя модели и версия модели для создания прогнозов (в данном случае lgbm_sm и версии 1).
from synapse.ml.predict import MLFlowTransformer

model = MLFlowTransformer(
    inputCols=list(df_test.columns),
    outputCol='predictions',
    modelName='lgbm_sm',
    modelVersion=1
)

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

import pandas

predictions = model.transform(df_test)
display(predictions)

ПРОГНОЗИРОВАНИе с помощью API SQL Spark

Следующий код вызывает функцию PREDICT с помощью API SQL Spark.

from pyspark.ml.feature import SQLTransformer 

# Substitute "model_name", "model_version", and "features" below with values for your own model name, model version, and feature columns
model_name = 'lgbm_sm'
model_version = 1
features = df_test.columns

sqlt = SQLTransformer().setStatement( 
    f"SELECT PREDICT('{model_name}/{model_version}', {','.join(features)}) as predictions FROM __THIS__")

# Substitute "X_test" below with your own test dataset
display(sqlt.transform(df_test))

PREDICT с определяемой пользователем функцией (UDF)

Следующий код вызывает функцию PREDICT с помощью UDF PySpark.

from pyspark.sql.functions import col, pandas_udf, udf, lit

# Substitute "model" and "features" below with values for your own model name and feature columns
my_udf = model.to_udf()
features = df_test.columns

display(df_test.withColumn("predictions", my_udf(*[col(f) for f in features])))

Обратите внимание, что вы также можете создать код PREDICT на странице элемента модели. Узнайте о PREDICT.

Запишите результаты предсказания модели в Lakehouse.

Создав пакетные прогнозы, запишите результаты прогнозирования модели обратно в lakehouse.

# Save predictions to lakehouse to be used for generating a Power BI report
table_name = "customer_churn_test_predictions"
predictions.write.format('delta').mode("overwrite").save(f"Tables/{table_name}")
print(f"Spark DataFrame saved to delta table: {table_name}")

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

Продолжить к: