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.
Dieses Beispielnotizbuch zeigt, wie Sie ein Klassifizierungsmodell für Databricks mithilfe der AutoML-Python-API trainieren. Mit dem UCI Census Income-Datensatz rufen Sie automl.classify() auf, um vorherzusagen, ob eine Einzelperson mehr als 50K pro Jahr verdient, und verwenden Sie dann den besten Versuch, um sowohl auf Pandas als auch auf Spark DataFrames Inferenz durchzuführen.
Requirements
Databricks Runtime für Machine Learning.
Datenset "Einkommen aus der Volkszählung"
Dieses Dataset enthält Statistische Daten aus der 1994-Zählungsdatenbank. Jede Zeile stellt eine Gruppe von Einzelpersonen dar. Ziel ist es, zu bestimmen, ob eine Gruppe ein Einkommen von über 50k pro Jahr hat oder nicht. Diese Klassifizierung wird als Zeichenfolge in der Spalte 'Einkommen' mit den Werten <=50K oder >50k dargestellt.
from pyspark.sql.types import DoubleType, StringType, StructType, StructField
schema = StructType([
StructField("age", DoubleType(), False),
StructField("workclass", StringType(), False),
StructField("fnlwgt", DoubleType(), False),
StructField("education", StringType(), False),
StructField("education_num", DoubleType(), False),
StructField("marital_status", StringType(), False),
StructField("occupation", StringType(), False),
StructField("relationship", StringType(), False),
StructField("race", StringType(), False),
StructField("sex", StringType(), False),
StructField("capital_gain", DoubleType(), False),
StructField("capital_loss", DoubleType(), False),
StructField("hours_per_week", DoubleType(), False),
StructField("native_country", StringType(), False),
StructField("income", StringType(), False)
])
input_df = spark.read.format("csv").schema(schema).load("/databricks-datasets/adult/adult.data")
Zug-/Testteilung
train_df, test_df = input_df.randomSplit([0.99, 0.01], seed=42)
display(train_df)
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.classify(train_df, target_col="income", timeout_minutes=30)
Der folgende Befehl zeigt Informationen zur AutoML-Ausgabe an.
help(summary)
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.
model_uri = summary.best_trial.model_path
# model_uri = "<model-uri-from-generated-notebook>"
Pandas DataFrame
import mlflow
# Prepare test dataset
test_pdf = test_df.toPandas()
y_test = test_pdf["income"]
X_test = test_pdf.drop("income", axis=1)
# Run inference using the best model
model = mlflow.pyfunc.load_model(model_uri)
predictions = model.predict(X_test)
test_pdf["income_predicted"] = predictions
display(test_pdf)
Spark-DataFrame
predict_udf = mlflow.pyfunc.spark_udf(spark, model_uri=model_uri, result_type="string")
display(test_df.withColumn("income_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. Das Diagramm zeigt die Aufschlüsselung zwischen korrekten und falschen Vorhersagen.
import sklearn.metrics
model = mlflow.sklearn.load_model(model_uri)
sklearn.metrics.plot_confusion_matrix(model, X_test, y_test)
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.