Regressiemodellen trainen met De AutoML Python-API

In dit voorbeeldnotebook ziet u hoe u een regressiemodel traint op Databricks met behulp van de AutoML-Python-API. Met behulp van de gegevensset voor huisvesting in Californië roept u automl.regress() aan om de mediaanwaarde van een huis te voorspellen en gebruikt u vervolgens de beste poging om voorspellingen te doen op een apart gehouden testset.

Requirements

Databricks Runtime voor Machine Learning 8.3 of hoger.

Gegevensset voor huisvesting in Californië

Deze gegevensset is afgeleid van de amerikaanse volkstelling van 1990, waarbij één rij per volkstellingsblokgroep wordt gebruikt. De doelvariabele is de mediaan huiswaarde voor districten in Californië.

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

Splitsing trainen/testen

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

Met de volgende opdracht wordt een AutoML-uitvoering gestart. U moet de kolom opgeven die het model in het target_col argument moet voorspellen.
Wanneer de uitvoering is voltooid, kunt u de koppeling naar het beste proefnotitieblok volgen om de trainingscode te onderzoeken. Dit notebook bevat ook een plot voor de belangrijkheid van kenmerken.

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

Met de volgende opdracht wordt informatie weergegeven over de AutoML-uitvoer.

help(summary)

Itereren op het model

  • Bekijk de notebooks en experimenten die hierboven zijn gekoppeld.
  • Als de metrische gegevens voor de beste experimentele notebook er goed uitzien, gaat u rechtstreeks naar de inferentiesectie.
  • Als u het model wilt verbeteren dat is gegenereerd door de beste proefversie:
    • Ga naar het notebook met de beste proefversie en kloon het.
    • Bewerk het notitieblok indien nodig om het model te verbeteren. U kunt bijvoorbeeld verschillende hyperparameters proberen.
    • Wanneer u tevreden bent met het model, noteert u de URI waar het artefact voor het getrainde model wordt geregistreerd. Wijs deze URI toe aan de model_uri variabele in Cmd 12.

Conclusie

U kunt het model dat is getraind door AutoML gebruiken om voorspellingen te doen over nieuwe gegevens. In de onderstaande voorbeelden ziet u hoe u voorspellingen kunt doen over gegevens in pandas DataFrames of hoe u het model registreert als spark-UDF voor voorspelling op 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()))

Test

Gebruik het laatste model om voorspellingen te doen voor de holdouttest die is ingesteld om een schatting te maken van de prestaties van het model in een productie-instelling.

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

Het model registreren en implementeren

U kunt een model registreren en implementeren dat is getraind door AutoML, net als elk ander model in het MLflow-modelregister. Zie MLflow-modellen voor logboeken, laden en registreren.

Probleemoplossing: No module named pandas.core.indexes.numeric

Wanneer u een met AutoML getraind model met Mosaic AI Model Serving bedient, ziet u mogelijk de fout No module named pandas.core.indexes.numeric. Dit gebeurt wanneer de pandas versie die wordt gebruikt door AutoML verschilt van de versie in het model dat eindpuntomgeving bedient. U lost dit als volgt op:

  1. Download het add-pandas-dependency.py script. Het script bewerkt requirements.txt en conda.yaml voor het vastgelegde model om pandas==1.5.3 vast te zetten.
  2. Bewerk het script om de run_id-identificator van de MLflow-run op te nemen waarin het model is vastgelegd.
  3. Registreer het model opnieuw.
  4. Beheer de nieuwe modelversie.

Voorbeeld van notebook

Regressiemodellen trainen met

Krijg notebook

Volgende stappen

AutoML Python API-referentie.