Regressziós modellek betanítása az AutoML Python API-val

Ez a példajegyzetfüzet bemutatja, hogyan taníthat be regressziós modellt a Databricksen az AutoML Python API használatával. A kaliforniai lakásadatkészlettel a mediánház értékének előrejelzésére hívhatja fel automl.regress() , majd a legjobb próbaverzióval következtetést hajthat végre egy visszatartott tesztkészleten.

Követelmények

Databricks Runtime Machine Learning 8.3 vagy újabb verzióhoz.

Kaliforniai lakásadatkészlet

Ez az adatkészlet az 1990-ben történt amerikai összeírásból származik, a census blokkcsoportonként egy sort használva. A célváltozó a kaliforniai körzetek átlagos házértéke.

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

Betanítás/tesztelés felosztása

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)

Training

Az alábbi parancs elindít egy AutoML-futtatási parancsot. Meg kell adnia azt az oszlopot, amelyet a modellnek előre kell jeleznie az target_col argumentumban.
A futtatás befejezése után a legjobb próbaverziós jegyzetfüzetre mutató hivatkozást követve megvizsgálhatja a betanítási kódot. Ez a jegyzetfüzet egy funkció-fontossági diagramot is tartalmaz.

from databricks import automl
summary = automl.regress(train_pdf, target_col="MedHouseVal", timeout_minutes=30)

Az alábbi parancs az AutoML-kimenettel kapcsolatos információkat jeleníti meg.

help(summary)

Iteráljuk a modellt

  • Megismerheti a fent hivatkozott jegyzetfüzeteket és kísérleteket.
  • Ha a legjobb próbaverziós jegyzetfüzet metrikái jól néznek ki, ugorjon közvetlenül a következtetési szakaszra.
  • Ha javítani szeretne a legjobb próbaverzió által létrehozott modellen:
    • Nyissa meg a jegyzetfüzetet a legjobb próbaverzióval, és klónozza.
    • A modell továbbfejlesztéséhez szükség szerint szerkessze a jegyzetfüzetet. Előfordulhat például, hogy különböző hiperparamétereket próbál ki.
    • Ha elégedett a modellel, jegyezze fel az URI-t, ahol a betanított modell összetevőjének naplózása történik. Rendelje hozzá ezt az URI-t a model_uri változóhoz a Cmd 12 parancsban.

Következtetés

Az AutoML által betanított modell használatával előrejelzéseket készíthet az új adatokról. Az alábbi példák bemutatják, hogyan készíthet előrejelzéseket a pandas DataFrame-ekben lévő adatokról, vagy hogyan regisztrálhatja a modellt Spark UDF-ként a Spark DataFrame-eken való előrejelzéshez.

pandas DataFrame

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

Test

Az utolsó modell használatával előrejelzéseket készíthet a visszatartottsági tesztkészletről, hogy megbecsülje, hogyan teljesít a modell egy éles környezetben.

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

A modell regisztrálása és üzembe helyezése

Regisztrálhat és üzembe helyezhet egy AutoML által betanított modellt, mint bármely más modellt az MLflow Modellregisztrációs adatbázisában. Lásd: MLflow-modellek naplózása, betöltése és regisztrálása.

Hibaelhárítás: No module named pandas.core.indexes.numeric

Ha AutoML-betanított modellt szolgál ki a Model Service szolgáltatással, a hiba No module named pandas.core.indexes.numericjelenhet meg. Ez akkor fordul elő, ha az pandas AutoML által használt verzió eltér a végpontkörnyezetet kiszolgáló modell verziójától. A probléma megoldása:

  1. Töltse le a add-pandas-dependency.py szkriptet. A szkript szerkeszti a requirements.txt és conda.yaml elemeket a naplózott modell számára, hogy rögzítse a pandas==1.5.3.
  2. Szerkessze a szkriptet annak az MLflow-futtatásnak a run_id beillesztéséhez, ahol a modellt naplózták.
  3. Regisztrálja újra a modellt.
  4. Az új modellverzió kiszolgálása.

Példajegyzetfüzet

regressziós modellek betanítása

Jegyzetfüzet lekérése

Következő lépések

AutoML Python API-referencia.