AutoML Python API'siyle regresyon modellerini eğitme

Bu örnek not defteri, AutoML Python API'sini kullanarak Databricks'te bir regresyon modelini eğitmeyi gösterir. California konut veri kümesi ile ortanca ev değerini tahmin etmek için automl.regress() çağırır ve ardından dışarıda tutulan test kümesinde çıkarım yapmak için en iyi denemeyi kullanırsınız.

Requirements

Machine Learning 8.3 veya üzeri için Databricks Runtime.

California konut veri kümesi

Bu veri kümesi, 1990 ABD nüfus sayımından türetilmiştir ve her sayım blok grubu için bir satır kullanılır. Hedef değişken, California bölgeleri için ortanca ev değeridir.

import sklearn
input_pdf = sklearn.datasets.fetch_california_housing(as_frame=True)
display(input_pdf.frame)

Eğitim/test ayrımı

from sklearn.model_selection import train_test_split

train_pdf, test_pdf = train_test_split(input_pdf.frame, test_size=0.01, random_state=42)
display(train_pdf)

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.regress(train_pdf, target_col="MedHouseVal", timeout_minutes=30)

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

help(summary)

Modeli yineleyin

  • Yukarıda bağlantılı not defterlerini ve denemeleri keşfedin.
  • En iyi deneme not defteri ölçümleri iyi görünüyorsa doğrudan çıkarım bölümüne atlayın.
  • En iyi deneme sürümü tarafından oluşturulan modeli geliştirmek istiyorsanız:
    • En iyi deneme sürümünü içeren not defterine gidin ve kopyalayın.
    • Modeli geliştirmek için not defterini gerektiği gibi düzenleyin. Örneğin, farklı hiper parametreler deneyebilirsiniz.
    • Modelden memnun olduğunuzda, eğitilen modelin kaydedildiği URI'yi not edin. Bu URI'yi Cmd 12'deki değişkene atayın model_uri .

Çı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.

pandas DataFrame (veri çerçevesi)

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

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

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

Spark DataFrame

# Prepare the test dataset
test_df = spark.createDataFrame(test_pdf)
predict_udf = mlflow.pyfunc.spark_udf(spark, model_uri=model_uri)
display(test_df.withColumn("MedHouseVal_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.

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# Prepare the dataset
y_pred = test_pdf["MedHouseVal_predicted"]
test = pd.DataFrame({"Predicted":y_pred,"Actual":y_test})
test = test.reset_index()
test = test.drop(["index"], axis=1)

# plot graphs
fig= plt.figure(figsize=(16,8))
plt.plot(test[:50])
plt.legend(["Actual", "Predicted"])
sns.jointplot(x="Actual", y="Predicted", data=test, kind="reg");

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

Regresyon modellerini eğitmek için kullanarak

Not defterini alma

Sonraki adımlar

AutoML Python API başvurusu.