Zelfstudie deel 4: batchgewijs scoren en voorspellingen opslaan in een lakehouse
In deze zelfstudie leert u hoe u het geregistreerde LightGBMClassifier-model importeert dat is getraind in deel 3 met behulp van het Microsoft Fabric MLflow-modelregister en batchvoorspellingen uitvoert op een testgegevensset die is geladen vanuit een lakehouse.
Met Microsoft Fabric kunt u machine learning-modellen operationeel maken met een schaalbare functie met de naam PREDICT, die ondersteuning biedt voor batchgewijs scoren in elke rekenengine. U kunt batchvoorspellingen rechtstreeks genereren vanuit een Microsoft Fabric-notebook of vanaf de itempagina van een bepaald model. Meer informatie over PREDICT-.
Als u batchvoorspellingen voor de testgegevensset wilt genereren, gebruikt u versie 1 van het getrainde LightGBM-model dat de beste prestaties heeft aangetoond voor alle getrainde Machine Learning-modellen. U laadt de testgegevensset in een Spark DataFrame en maakt een MLFlowTransformer-object om batchvoorspellingen te genereren. Vervolgens kunt u de functie PREDICT aanroepen op een van de volgende drie manieren:
- Transformer-API van SynapseML
- Spark SQL-API
- Door de gebruiker gedefinieerde PySpark-functie (UDF)
Voorwaarden
Een Microsoft Fabric-abonnementophalen. Of meld u aan voor een gratis microsoft Fabric-proefversie.
Meld u aan bij Microsoft Fabric-.
Gebruik de ervaringswisselaar aan de linkerkant van de startpagina om over te schakelen naar Fabric.
Dit is deel 4 van 5 in de handleidingserie. Als u deze zelfstudie wilt voltooien, moet u eerst het volgende voltooien:
- deel 1: gegevens opnemen in een Microsoft Fabric Lakehouse met behulp van Apache Spark.
- deel 2: Gegevens verkennen en visualiseren met behulp van Microsoft Fabric-notebooks voor meer informatie over de gegevens.
- deel 3: Machine Learning-modellen trainen en registreren.
Volg mee in het notitieblok
4-predict.ipynb is het notebook dat bij deze tutorial hoort.
Als u het bijbehorende notitieblok voor deze zelfstudie wilt openen, volgt u de instructies in Uw systeem voorbereiden op zelfstudies voor gegevenswetenschap om het notebook in uw werkruimte te importeren.
Als u liever de code van deze pagina kopieert en plakt, kunt u een nieuw notitieblok maken.
Zorg ervoor dat een lakehouse aan het notebook koppelen voordat u begint met het uitvoeren van code.
Belangrijk
Bevestig hetzelfde lakehouse dat u in de andere delen van deze serie gebruikt hebt.
De testgegevens laden
Laad de testgegevens die u in deel 3 hebt opgeslagen.
df_test = spark.read.format("delta").load("Tables/df_test")
display(df_test)
VOORSPELLEN met de Transformer-API
Als u de Transformer-API van SynapseML wilt gebruiken, moet u eerst een MLFlowTransformer-object maken.
MlFlowTransformer-object instantiƫren
Het MLFlowTransformer-object is een wrapper rond het MLFlow-model dat u hebt geregistreerd in deel 3. Hiermee kunt u batchvoorspellingen genereren voor een bepaald DataFrame. Als u het MLFlowTransformer-object wilt instantiƫren, moet u de volgende parameters opgeven:
- De kolommen uit het test-DataFrame die u nodig hebt als invoer voor het model (in dit geval hebt u ze allemaal nodig).
- Een naam voor de nieuwe uitvoerkolom (in dit geval voorspellingen).
- De juiste modelnaam en modelversie om de voorspellingen te genereren (in dit geval
lgbm_sm
en versie 1).
from synapse.ml.predict import MLFlowTransformer
model = MLFlowTransformer(
inputCols=list(df_test.columns),
outputCol='predictions',
modelName='lgbm_sm',
modelVersion=1
)
Nu u het MLFlowTransformer-object hebt, kunt u dit gebruiken om batchvoorspellingen te genereren.
import pandas
predictions = model.transform(df_test)
display(predictions)
VOORSPELLEN met de Spark SQL-API
Met de volgende code wordt de functie PREDICT aangeroepen met de Spark SQL-API.
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))
VOORSPELLEN met een door de gebruiker gedefinieerde functie (UDF)
Met de volgende code wordt de functie PREDICT aangeroepen met een PySpark UDF.
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])))
U kunt ook PREDICT-code genereren op de itempagina van een model. Meer informatie over PREDICT-.
Modelvoorspellingsresultaten schrijven naar lakehouse
Zodra u batchvoorspellingen hebt gegenereerd, schrijft u de voorspellingsresultaten van het model terug naar het 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}")
Volgende stap
Ga door naar: