Öğretici Bölüm 4: Toplu puanlama gerçekleştirme ve tahminleri göl evinde kaydetme
Bu öğreticide, Microsoft Fabric MLflow model kayıt defteri kullanılarak 3. bölümde eğitilen kayıtlı LightGBMClassifier modelini içeri aktarmayı ve bir göl evinden yüklenen test veri kümesinde toplu tahminler gerçekleştirmeyi öğreneceksiniz.
Microsoft Fabric, herhangi bir işlem altyapısında toplu puanlama desteği sunan PREDICT adlı ölçeklenebilir bir işlevle makine öğrenmesi modellerini kullanıma sunmanızı sağlar. Toplu tahminleri doğrudan bir Microsoft Fabric not defterinden veya belirli bir modelin öğe sayfasından oluşturabilirsiniz. PREDICT hakkında bilgi edinin.
Test veri kümesinde toplu tahminler oluşturmak için eğitilen tüm makine öğrenmesi modelleri arasında en iyi performansı gösteren eğitilmiş LightGBM modelinin 1. sürümünü kullanacaksınız. Test veri kümesini bir spark DataFrame'e yükleyip toplu tahminler oluşturmak için bir MLFlowTransformer nesnesi oluşturacaksınız. Ardından, aşağıdaki üç yoldan birini kullanarak PREDICT işlevini çağırabilirsiniz:
- SynapseML'den Transformatör API'si
- Spark SQL API'si
- PySpark kullanıcı tanımlı işlevi (UDF)
Önkoşullar
Microsoft Fabric aboneliği alın. Alternatif olarak, ücretsiz bir Microsoft Fabric deneme sürümüne kaydolun.
Synapse Veri Bilimi deneyimine geçmek için giriş sayfanızın sol tarafındaki deneyim değiştiriciyi kullanın.
Öğretici serisinde bu bölüm 4 /5. Bu öğreticiyi tamamlamak için önce şunları tamamlayın:
- 1. Bölüm: Apache Spark kullanarak bir Microsoft Fabric lakehouse'a veri alma.
- 2. Bölüm: Veriler hakkında daha fazla bilgi edinmek için Microsoft Fabric not defterlerini kullanarak verileri keşfedin ve görselleştirin.
- Bölüm 3: Makine öğrenmesi modellerini eğitme ve kaydetme.
Not defterinde birlikte izleyin
4-predict.ipynb , bu öğreticiye eşlik eden not defteridir.
Bu öğreticide eşlik eden not defterini açmak için, not defterini çalışma alanınıza aktarmak üzere Sisteminizi veri bilimi öğreticilerine hazırlama başlığındaki yönergeleri izleyin.
Bu sayfadaki kodu kopyalayıp yapıştırmayı tercih ederseniz, yeni bir not defteri oluşturabilirsiniz.
Kod çalıştırmaya başlamadan önce not defterine bir göl evi eklediğinizden emin olun.
Önemli
Bu serinin diğer bölümlerine kullandığınız göl evi ekleyin.
Test verilerini yükleme
Bölüm 3'te kaydettiğiniz test verilerini yükleyin.
df_test = spark.read.format("delta").load("Tables/df_test")
display(df_test)
Transformer API ile PREDICT
SynapseML'den Transformer API'sini kullanmak için önce bir MLFlowTransformer nesnesi oluşturmanız gerekir.
MLFlowTransformer nesnesinin örneğini oluşturma
MLFlowTransformer nesnesi, Bölüm 3'te kaydettiğiniz MLFlow modelinin etrafındaki bir sarmalayıcıdır. Belirli bir DataFrame üzerinde toplu tahminler oluşturmanıza olanak tanır. MLFlowTransformer nesnesinin örneğini görüntülemek için aşağıdaki parametreleri sağlamanız gerekir:
- Test DataFrame'den modele giriş olarak ihtiyacınız olan sütunlar (bu durumda bunların tümüne ihtiyacınız olacaktır).
- Yeni çıkış sütunu için bir ad (bu örnekte tahminler).
- Tahminleri oluşturmak için doğru model adı ve model sürümü (bu örnekte
lgbm_sm
ve sürüm 1).
from synapse.ml.predict import MLFlowTransformer
model = MLFlowTransformer(
inputCols=list(df_test.columns),
outputCol='predictions',
modelName='lgbm_sm',
modelVersion=1
)
ARTıK MLFlowTransformer nesnesine sahip olduğunuz için toplu tahminler oluşturmak için bunu kullanabilirsiniz.
import pandas
predictions = model.transform(df_test)
display(predictions)
Spark SQL API'siyle PREDICT
Aşağıdaki kod Spark SQL API'siyle PREDICT işlevini çağırır.
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))
Kullanıcı tanımlı işlev (UDF) ile PREDICT
Aşağıdaki kod, PySpark UDF ile PREDICT işlevini çağırır.
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])))
Modelin öğe sayfasından PREDICT kodu da oluşturabileceğinizi unutmayın. PREDICT hakkında bilgi edinin.
Lakehouse'a model tahmini sonuçları yazma
Toplu tahminler oluşturduktan sonra model tahmini sonuçlarını lakehouse'a geri yazın.
# 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}")
Sonraki adım
Devam et: