Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet exemple de bloc-notes montre comment entraîner un modèle de classification sur Databricks à l’aide de l’API Python AutoML. À l'aide du jeu de données UCI Census Income, vous appelez automl.classify() pour prédire si un individu gagne plus de 50 000 $ par an, puis utilisez la meilleure expérimentation pour mener l'inférence sur les DataFrames pandas et Spark.
Requirements
Databricks Runtime pour Machine Learning.
Jeu de données sur le revenu du recensement
Ce jeu de données contient des données de recensement de la base de données de recensement de 1994. Chaque ligne représente un groupe d’individus. L’objectif est de déterminer si un groupe a un revenu de plus de 50 000 par an ou non. Cette classification est représentée sous forme de chaîne dans la colonne de revenu avec des valeurs <=50K ou >50k.
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")
Fractionnement entraînement/test
train_df, test_df = input_df.randomSplit([0.99, 0.01], seed=42)
display(train_df)
Entrainement
La commande suivante démarre une exécution AutoML. Vous devez fournir la colonne que le modèle doit prédire dans l’argument target_col .
Une fois l'exécution terminée, vous pouvez suivre le lien vers le meilleur carnet de notes d'essai pour examiner le code de formation. Ce bloc-notes inclut également un tracé de l'importance des caractéristiques.
from databricks import automl
summary = automl.classify(train_df, target_col="income", timeout_minutes=30)
La commande suivante affiche des informations sur la sortie AutoML.
help(summary)
Inférence
Vous pouvez utiliser le modèle entraîné par AutoML pour effectuer des prédictions sur de nouvelles données. Les exemples ci-dessous montrent comment effectuer des prédictions sur des données dans des DataFrames pandas ou inscrire le modèle en tant qu’UDF Spark pour la prédiction sur des DataFrames Spark.
model_uri = summary.best_trial.model_path
# model_uri = "<model-uri-from-generated-notebook>"
DataFrame pandas
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()))
Essai
Utilisez le modèle final pour effectuer des prédictions sur l'ensemble de test de validation afin d'estimer comment le modèle fonctionnerait en environnement de production. Le diagramme montre la répartition entre les prédictions correctes et incorrectes.
import sklearn.metrics
model = mlflow.sklearn.load_model(model_uri)
sklearn.metrics.plot_confusion_matrix(model, X_test, y_test)
Inscrire et déployer le modèle
Vous pouvez inscrire et déployer un modèle entraîné par AutoML comme n’importe quel autre modèle dans le registre de modèles MLflow. Consultez journalisation, chargement et enregistrement des modèles MLflow.
Dépannage: No module named pandas.core.indexes.numeric
Lorsque vous servez un modèle AutoML entraîné avec Mosaic AI Model Serving, vous pouvez voir l’erreur No module named pandas.core.indexes.numeric. Cela se produit lorsque la pandas version utilisée par AutoML diffère de celle de l’environnement de point de terminaison de service du modèle. Pour résoudre les problèmes suivants :
- Téléchargez le script add-pandas-dependency.py. Le script modifie
requirements.txtetconda.yamlpour épinglerpandas==1.5.3au modèle journalisé. - Modifiez le script pour inclure le
run_idde l'exécution MLflow où le modèle a été enregistré. - Réinscrivez le modèle.
- Servez la nouvelle version du modèle.
Exemple de bloc-notes
Entraîner des modèles de classification avec l’API Python AutoML
Obtenir un ordinateur portable
Étapes suivantes
Informations de référence sur l’API Python AutoML.