Trénování regresních modelů pomocí rozhraní Python API AutoML

Tento ukázkový poznámkový blok ukazuje, jak trénovat regresní model v Databricks pomocí rozhraní API Python AutoML. Pomocí datové sady bydlení v Kalifornii zavoláte automl.regress() k predikci mediánu hodnoty domu a pak použijete nejlepší pokus k provedení odvozování na odděleném testovacím souboru.

Requirements

Databricks Runtime pro Machine Learning 8.3 nebo novější

Datová sada bydlení v Kalifornii

Tato datová sada byla odvozena ze sčítání lidu USA z roku 1990 pomocí jednoho řádku na skupinu bloků sčítání lidu. Cílová proměnná je mediánem hodnoty domu pro oblasti Kalifornie.

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

Rozdělení trénování/testování

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)

Školení

Následující příkaz spustí spuštění AutoML. Je nutné zadat sloupec, který by model měl v argumentu předpovědět target_col .
Po dokončení spuštění můžete pomocí odkazu na nejlepší zkušební poznámkový blok prozkoumat trénovací kód. Tento poznámkový blok obsahuje také diagram důležitosti funkcí.

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

Následující příkaz zobrazí informace o výstupu AutoML.

help(summary)

Iterujte na modelu

  • Prozkoumejte poznámkové bloky a experimenty uvedené výše.
  • Pokud metriky pro nejlepší zkušební poznámkový blok vypadají dobře, přeskočte přímo do oddílu odvozování.
  • Pokud chcete vylepšit model vygenerovaný nejlepší zkušební verzí:
    • Přejděte do poznámkového bloku s nejlepší zkušební verzí a naklonujte ho.
    • Podle potřeby upravte poznámkový blok a vylepšete model. Můžete například vyzkoušet různé hyperparametry.
    • Až budete s modelem spokojení, poznamenejte si identifikátor URI, ve kterém je uložen artefakt natrénovaného modelu. Přiřaďte tento identifikátor URI proměnné model_uri v Cmd 12.

Odvozování

Pomocí modelu, který autoML vytrénuje, můžete vytvářet předpovědi na nová data. Níže uvedené příklady ukazují, jak provádět předpovědi dat v datových rámcích pandas nebo registrovat model jako UDF Sparku pro predikce datových rámců Sparku.

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)

Datový rámec Sparku

# 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

Pomocí finálního modelu proveďte předpovědi na vyřazené testovací sadě a odhadněte, jak by model fungoval v produkčním prostředí.

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

Registrace a nasazení modelu

Model natrénovaný autoML můžete zaregistrovat a nasadit stejně jako jakýkoli jiný model v registru modelů MLflow. Viz Zaznamenání, načtení a registrace modelů MLflow.

Řešení potíží: No module named pandas.core.indexes.numeric

Při poskytování modelu vytrénovaného autoML pomocí služby Model Serving se může zobrazit chyba No module named pandas.core.indexes.numeric. K tomu dochází v případě, že se pandas verze používaná službou AutoML liší od verze v prostředí koncového bodu obsluhy modelu. Řešení je následující:

  1. Stáhněte si skript add-pandas-dependency.py. Skript upraví requirements.txt a conda.yaml pro protokolovaný model, aby připnul pandas==1.5.3.
  2. Upravte skript tak, aby zahrnoval run_id běh MLflow, ve kterém byl model zaznamenán.
  3. Znovu zaregistrujte model.
  4. Obsluha nové verze modelu

Příklad notebooku

Trénujte regresní modely pomocí

Pořiďte si poznámkový blok

Další kroky

Referenční informace k rozhraní PYTHON API pro AutoML