Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Beispielnotizbuch wird gezeigt, wie Sie mithilfe der AutoML-Python-API ein Regressionsmodell für Databricks trainieren. Mithilfe des California-Housing-Datasets rufen Sie automl.regress() auf, um den medianen Hauswert vorherzusagen, und verwenden dann den besten Versuch, um eine Vorhersage für einen zurückgehaltenen Testsatz durchzuführen.
Anforderungen
Databricks Runtime für Machine Learning 8.3 oder höher.
California Housing Dataset
Dieses Dataset wurde aus der US-Zählung 1990 abgeleitet, wobei eine Zeile pro Zählungsblockgruppe verwendet wird. Die Zielvariable ist der Median-Hauswert für kaliforniennische Bezirke.
import sklearn
input_pdf = sklearn.datasets.fetch_california_housing(as_frame=True)
display(input_pdf.frame)
Zug-/Testteilung
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)
Schulungen
Der folgende Befehl startet eine AutoML-Ausführung. Sie müssen die Spalte angeben, die das Modell im target_col Argument vorhersagen soll.
Wenn die Ausführung abgeschlossen ist, können Sie dem Link zum besten Testnotizbuch folgen, um den Schulungscode zu untersuchen. Dieses Notizbuch enthält auch ein Merkmalswichtigkeitsdiagramm.
from databricks import automl
summary = automl.regress(train_pdf, target_col="MedHouseVal", timeout_minutes=30)
Der folgende Befehl zeigt Informationen zur AutoML-Ausgabe an.
help(summary)
Iterieren des Modells
- Erkunden Sie die oben verknüpften Notizbücher und Experimente.
- Wenn die Metriken für das beste Versuchsnotizbuch gut aussehen, fahren Sie direkt mit dem Inferenzabschnitt fort.
- Wenn Sie das von der besten Testversion generierte Modell verbessern möchten:
- Wechseln Sie zum Notizbuch mit der besten Testversion, und klonen Sie es.
- Bearbeiten Sie das Notizbuch nach Bedarf, um das Modell zu verbessern. Beispielsweise können Sie verschiedene Hyperparameter ausprobieren.
- Wenn Sie mit dem Modell zufrieden sind, beachten Sie den URI, unter dem das Artefakt des trainierten Modells protokolliert wird. Weisen Sie diese URI der
model_uriVariablen in Cmd 12 zu.
Schlussfolgerung
Sie können das von AutoML trainierte Modell verwenden, um Vorhersagen für neue Daten zu erstellen. Die folgenden Beispiele veranschaulichen, wie Sie Vorhersagen zu Daten in Pandas DataFrames erstellen oder das Modell als Spark UDF für die Vorhersage von Spark DataFrames registrieren.
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()))
Testen
Verwenden Sie das endgültige Modell, um Vorhersagen für den Holdout-Testdatensatz zu erstellen, um abzuschätzen, wie das Modell in einer Produktionsumgebung abschneiden würde.
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");
Registrieren und Bereitstellen des Modells
Sie können ein von AutoML trainiertes Modell wie jedes andere Modell in der MLflow-Modellregistrierung registrieren und bereitstellen. Weitere Informationen finden Sie unter Protokollieren, Laden und Registrieren von MLflow-Modellen.
Problembehandlung: No module named pandas.core.indexes.numeric
Wenn Sie ein AutoML-trainiertes Modell mit Mosaik AI Model Serving bedienen, wird möglicherweise der Fehler No module named pandas.core.indexes.numericangezeigt. Dies geschieht, wenn die von AutoML verwendete pandas Version von der Version in der Modellbereitstellungsendpunktumgebung abweicht. Behebung:
- Laden Sie das skript add-pandas-dependency.py herunter. Das Skript bearbeitet
requirements.txtundconda.yamlfür das protokollierte Modell, umpandas==1.5.3anzupinnen. - Bearbeiten Sie das Skript, um die
run_idder MLflow-Ausführung, in der das Modell protokolliert wurde, einzuschließen. - Registrieren Sie das Modell erneut.
- Stellen Sie die neue Modellversion bereit.