AutoML Python API'siyle sınıflandırma modellerini eğitin

Bu örnek not defteri, AutoML Python API'sini kullanarak Databricks'te sınıflandırma modelini eğitmeyi gösterir. UCI Census Geliri veri kümesini kullanarak, automl.classify() çağırarak bir bireyin yılda 50.000 Dolar'dan fazla kazanıp kazanmadığını tahmin edersiniz ve ardından hem pandas hem de Spark DataFrame'lerinde çıkarım yapmak için en iyi denemeyi kullanırsınız.

Requirements

Machine Learning için Databricks Runtime.

Nüfus sayımı gelir veri kümesi

Bu veri kümesi, 1994 nüfus sayımı veritabanındaki nüfus sayımı verilerini içerir. Her satır bir grup bir bireyi temsil eder. Amaç, bir grubun yılda 50 binden fazla gelire sahip olup olmadığını belirlemektir. Bu sınıflandırma, gelir sütununda veya <=50Kdeğerleriyle >50k bir dize olarak temsil edilir.

from pyspark.sql.types import DoubleType, StringType, StructType, StructField

schema = StructType([
  StructField("age", DoubleType(), False),
  StructField("workclass", StringType(), False),
  StructField("fnlwgt", DoubleType(), False),
  StructField("education", StringType(), False),
  StructField("education_num", DoubleType(), False),
  StructField("marital_status", StringType(), False),
  StructField("occupation", StringType(), False),
  StructField("relationship", StringType(), False),
  StructField("race", StringType(), False),
  StructField("sex", StringType(), False),
  StructField("capital_gain", DoubleType(), False),
  StructField("capital_loss", DoubleType(), False),
  StructField("hours_per_week", DoubleType(), False),
  StructField("native_country", StringType(), False),
  StructField("income", StringType(), False)
])
input_df = spark.read.format("csv").schema(schema).load("/databricks-datasets/adult/adult.data")

Eğitim/test ayrımı

train_df, test_df = input_df.randomSplit([0.99, 0.01], seed=42)
display(train_df)

Eğitim

Aşağıdaki komut bir AutoML çalıştırması başlatır. Modelin target_col argümanında tahmin etmesi gereken sütunu belirtmelisiniz.
Çalıştırma tamamlandığında, eğitim kodunu incelemek için en iyi deneme not defterinin bağlantısını izleyebilirsiniz. Bu not defteri ayrıca bir özellik önem grafiği de içerir.

from databricks import automl
summary = automl.classify(train_df, target_col="income", timeout_minutes=30)

Aşağıdaki komut AutoML çıkışı hakkındaki bilgileri görüntüler.

help(summary)

Çıkarım

Yeni veriler hakkında tahminlerde bulunmak için AutoML tarafından eğitilen modeli kullanabilirsiniz. Aşağıdaki örneklerde pandas DataFrames'teki veriler üzerinde tahminde bulunma veya modeli Spark DataFrames'te tahmin için Spark UDF olarak kaydetme işlemleri gösterilmektedir.

model_uri = summary.best_trial.model_path
# model_uri = "<model-uri-from-generated-notebook>"

pandas DataFrame (veri çerçevesi)

import mlflow

# Prepare test dataset
test_pdf = test_df.toPandas()
y_test = test_pdf["income"]
X_test = test_pdf.drop("income", axis=1)

# Run inference using the best model
model = mlflow.pyfunc.load_model(model_uri)
predictions = model.predict(X_test)
test_pdf["income_predicted"] = predictions
display(test_pdf)

Spark DataFrame

predict_udf = mlflow.pyfunc.spark_udf(spark, model_uri=model_uri, result_type="string")
display(test_df.withColumn("income_predicted", predict_udf()))

Sına

Modelin üretim ayarında nasıl performans göstereceğini tahmin etmek için bekleme testi kümesinde tahminlerde bulunmak için son modeli kullanın. Diyagram, doğru ve yanlış tahminler arasındaki dökümü gösterir.

import sklearn.metrics

model = mlflow.sklearn.load_model(model_uri)
sklearn.metrics.plot_confusion_matrix(model, X_test, y_test)

Modeli kaydetme ve dağıtma

MLflow Model Kayıt Defteri'ndeki diğer modellerde olduğu gibi AutoML tarafından eğitilen bir modeli kaydedebilir ve dağıtabilirsiniz. Bkz. MLflow modellerini günlüğe kaydetme, kaydettirme ve yükleme.

Sorun giderme: No module named pandas.core.indexes.numeric

Model Sunumu ile AutoML tarafından eğitilmiş bir modeli sunarken No module named pandas.core.indexes.numeric hatasını görebilirsiniz. AutoML tarafından kullanılan sürüm, uç nokta ortamı sunan modeldeki sürümden farklı olduğunda pandas bu durum ortaya çıkar. Bunu çözmek için:

  1. add-pandas-dependency.py betiğini indirin. Betik, günlüğe kaydedilen modeli sabitlemek için requirements.txt, conda.yaml ve pandas==1.5.3 öğelerini düzenler.
  2. Betiği, modelin run_id günlüğe kaydedildiği MLflow çalıştırmasını içerecek şekilde düzenleyin.
  3. Modeli yeniden kaydedin.
  4. Yeni model sürümünü sunma.

Örnek defter

AutoML Python API'siyle sınıflandırma modellerini eğitin

not defteri alma

Sonraki adımlar

AutoML Python API başvurusu.