Träna regressionsmodeller med AutoML Python API

Den här exempelanteckningsboken visar hur du tränar en regressionsmodell på Databricks med hjälp av AutoML-Python-API:et. Med hjälp av datamängden för bostäder i Kalifornien anropar du automl.regress() för att förutsäga medianvärdet för husen och använder sedan bästa prov för att utföra inferens på en testuppsättning som hålls ute.

Kravspecifikation

Databricks Runtime för strojové učenie 8.3 eller senare.

Datauppsättning för bostäder i Kalifornien

Den här datamängden härleddes från folkräkningen i USA 1990 med hjälp av en rad per censusblockgrupp. Målvariabeln är medianvärdet för hus i Kalifornien.

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

Tränings-/testuppdelning

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)

Utbildning

Följande kommando startar en AutoML-körning. Du måste ange den kolumn som modellen ska förutsäga i target_col argumentet.
När körningen är klar kan du följa länken till den bästa utvärderingsanteckningsboken för att undersöka träningskoden. Den här anteckningsboken innehåller också ett diagram över funktioners betydelse.

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

Följande kommando visar information om AutoML-utdata.

help(summary)

Iterera på modellen

  • Utforska notebook-filerna och experimenten som är länkade ovan.
  • Om måtten för den bästa utvärderingsanteckningsboken ser bra ut går du direkt till slutsatsdragningsavsnittet.
  • Om du vill förbättra den modell som genereras av den bästa utvärderingsversionen:
    • Gå till notebook-filen med den bästa utvärderingsversionen och klona den.
    • Redigera anteckningsboken efter behov för att förbättra modellen. Du kan till exempel prova olika hyperparametrar.
    • När du är nöjd med modellen bör du notera URI:n där artefakten för den tränade modellen loggas. Tilldela den här URI:n till variabeln model_uri i Cmd 12.

Slutsatsdragning

Du kan använda modellen som tränats av AutoML för att göra förutsägelser om nya data. Exemplen nedan visar hur du gör förutsägelser om data i Pandas DataFrames eller registrerar modellen som en Spark UDF för förutsägelse på Spark DataFrames.

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

Testa

Använd den slutliga modellen för att göra förutsägelser på holdout-testuppsättningen för att uppskatta hur modellen skulle prestera i en produktionsinställning.

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

Registrera och distribuera modellen

Du kan registrera och distribuera en modell som tränats av AutoML som vilken annan modell som helst i MLflow Model Registry. Se Logga, läsa in och registrera MLflow-modeller.

Felsökning: No module named pandas.core.indexes.numeric

När du betjänar en AutoML-tränad modell med Mosaic AI Model Serving kan du se felet No module named pandas.core.indexes.numeric. Detta inträffar när den pandas version som används av AutoML skiljer sig från den i modellen som betjänar slutpunktsmiljön. Så här löser du följande:

  1. Ladda ned add-pandas-dependency.py skriptet. Skriptet redigerar requirements.txt och conda.yaml för att fästa pandas==1.5.3 till den loggade modellen.
  2. Redigera skriptet så att det inkluderar run_id för den MLflow-körning där modellen registrerades.
  3. Registrera modellen igen.
  4. Hantera den nya modellversionen.

Exempelanteckningsbok

Träna regressionsmodeller med

Hämta anteckningsbok

Nästa steg

AutoML Python API-referens.