Del via


Selvstudium del 4: Udfør batchscore, og gem forudsigelser i et lakehouse

I dette selvstudium lærer du at importere den registrerede LightGBMClassifier-model, der blev oplært i del 3, ved hjælp af Microsoft Fabric MLflow-modelregistreringsdatabasen og udføre batchforudsigelser på et testdatasæt, der er indlæst fra et lakehouse.

Microsoft Fabric giver dig mulighed for at operationalisere modeller til maskinel indlæring med en skalerbar funktion kaldet PREDICT, som understøtter batchscore i ethvert beregningsprogram. Du kan generere batchforudsigelser direkte fra en Microsoft Fabric-notesbog eller fra en given models elementside. Få mere at vide om PREDICT.

Hvis du vil generere batchforudsigelser for testdatasættet, skal du bruge version 1 af den oplærte LightGBM-model, der viste den bedste ydeevne blandt alle oplærte modeller til maskinel indlæring. Du skal indlæse testdatasættet i en spark DataFrame og oprette et MLFlowTransformer-objekt for at generere batchforudsigelser. Du kan derefter aktivere funktionen PREDICT på en af følgende tre måder:

  • Transformer-API fra SynapseML
  • Spark SQL API
  • Brugerdefineret pySpark-funktion (UDF)

Forudsætninger

Denne del 4 af 5 i selvstudieserien. Hvis du vil fuldføre dette selvstudium, skal du først fuldføre:

Følg med i notesbogen

4-predict.ipynb er den notesbog, der følger med dette selvstudium.

Vigtig

Vedhæft det samme lakehouse, du brugte i de andre dele af denne serie.

Indlæs testdataene

Indlæs de testdata, du gemte i del 3.

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

FORUDSIG med Transformer-API'en

Hvis du vil bruge Transformer-API'en fra SynapseML, skal du først oprette et MLFlowTransformer-objekt.

Instantier MLFlowTransformer-objekt

OBJEKTET MLFlowTransformer er en ombrydning omkring den MLFlow-model, du registrerede i del 3. Det giver dig mulighed for at generere batchforudsigelser på en given DataFrame. Hvis du vil instantiere MLFlowTransformer-objektet, skal du angive følgende parametre:

  • Kolonnerne fra den testdataramme, du har brug for som input til modellen (i dette tilfælde skal du bruge dem alle).
  • Et navn til den nye outputkolonne (i dette tilfælde forudsigelser).
  • Det korrekte modelnavn og den korrekte modelversion til generering af forudsigelserne (i dette tilfælde lgbm_sm og version 1).
from synapse.ml.predict import MLFlowTransformer

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

Nu, hvor du har MLFlowTransformer-objektet, kan du bruge det til at generere batchforudsigelser.

import pandas

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

FORUDSIG med Spark SQL-API'en

Følgende kode aktiverer funktionen PREDICT med Spark SQL-API'en.

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 med en brugerdefineret funktion (UDF)

Følgende kode aktiverer funktionen PREDICT med en 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])))

Bemærk, at du også kan generere PREDICT-kode fra en models elementside. Få mere at vide om PREDICT.

Skriv resultater for modelforudsigelse til lakehouse

Når du har genereret batchforudsigelser, skal du skrive resultaterne af modelforudsigelsen tilbage til 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}")

Næste trin

Fortsæt til: