Melatih model klasifikasi dengan Api Python AutoML

Contoh notebook ini memperlihatkan cara melatih model klasifikasi pada Databricks menggunakan AutoML Python API. Dengan menggunakan himpunan data Pendapatan Sensus UCI, Anda memanggil automl.classify() untuk memprediksi apakah seseorang mendapatkan lebih dari $50K per tahun, lalu menggunakan uji coba terbaik untuk menjalankan inferensi pada kedua DataFrame Pandas dan Spark.

Requirements

Databricks Runtime untuk Pembelajaran Mesin.

Himpunan data pendapatan sensus

Himpunan data ini berisi data sensus dari database sensus 1994. Setiap baris mewakili sekelompok individu. Tujuannya adalah untuk menentukan apakah grup memiliki pendapatan lebih dari 50k setahun atau tidak. Klasifikasi ini direpresentasikan sebagai string di kolom pendapatan dengan nilai <=50K atau >50k.

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")

Pembagian data latih/uji

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

Pelatihan

Perintah berikut memulai eksekusi AutoML. Anda harus menyediakan kolom yang harus diprediksi model dalam target_col argumen.
Setelah proses selesai, Anda bisa mengikuti tautan ke buku catatan percobaan terbaik untuk memeriksa kode pelatihan. Notebook ini juga menyertakan plot kepentingan fitur.

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

Perintah berikut menampilkan informasi tentang output AutoML.

help(summary)

Inferensi

Anda dapat menggunakan model yang dilatih oleh AutoML untuk membuat prediksi pada data baru. Contoh di bawah ini menunjukkan cara membuat prediksi pada data di Pandas DataFrames, atau mendaftarkan model sebagai Spark UDF untuk prediksi pada Spark DataFrames.

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

pandas DataFrame

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()))

Test

Gunakan model akhir untuk membuat prediksi pada set uji tahanan untuk memperkirakan bagaimana performa model dalam lingkungan produksi. Diagram menunjukkan perincian antara prediksi yang benar dan salah.

import sklearn.metrics

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

Mendaftarkan dan menyebarkan model

Anda dapat mendaftar dan menyebarkan model yang dilatih oleh AutoML seperti model lain di MLflow Model Registry. Lihat Mencatat, memuat, dan mendaftarkan model MLflow.

Pemecahan masalah: No module named pandas.core.indexes.numeric

Ketika menyajikan model yang telah dilatih dengan AutoML menggunakan Mosaic AI Model Serving, Anda mungkin melihat kesalahan No module named pandas.core.indexes.numeric. Ini terjadi ketika versi pandas yang digunakan oleh AutoML berbeda dari versi dalam lingkungan penyajian model di titik akhir. Untuk menyelesaikan:

  1. Unduh skrip add-pandas-dependency.py. Untuk menyematkan pandas==1.5.3, skrip mengedit requirements.txt dan conda.yaml pada model yang telah dicatat.
  2. Edit skrip untuk menyertakan run_id dari run MLflow saat model dicatat.
  3. Daftarkan ulang model.
  4. Layani versi model baru.

Contoh buku catatan

Melatih model klasifikasi dengan Api Python AutoML

Dapatkan buku catatan

Langkah berikutnya

Referensi API Python AutoML.