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.
Ce notebook d'exemple montre comment entraîner un modèle de régression sur Databricks à l’aide de l’API AutoML Python. À l’aide du jeu de données de logement californien, vous appelez automl.regress() pour prédire la valeur médiane de la maison, puis utilisez le meilleur essai pour réaliser une inférence sur un jeu de test réservé.
Exigences
Databricks Runtime pour Machine Learning 8.3 ou version ultérieure.
Jeu de données sur le logement californien
Ce jeu de données a été dérivé du recensement américain de 1990, à l’aide d’une ligne par groupe de blocs de recensement. La variable cible est la valeur médiane de la maison pour les districts californiens.
import sklearn
input_pdf = sklearn.datasets.fetch_california_housing(as_frame=True)
display(input_pdf.frame)
Fractionnement entraînement/test
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)
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.regress(train_pdf, target_col="MedHouseVal", timeout_minutes=30)
La commande suivante affiche des informations sur la sortie AutoML.
help(summary)
Itérer sur le modèle
- Explorez les notebooks et les expériences mentionnés ci-dessus.
- Si les métriques du bloc-notes d’évaluation le mieux adapté sont correctes, passez directement à la section d’inférence.
- Si vous souhaitez améliorer le modèle généré par la meilleure version d’évaluation :
- Accédez au notebook ayant le meilleur essai et clonez-le.
- Modifiez le bloc-notes si nécessaire pour améliorer le modèle. Par exemple, vous pouvez essayer différents hyperparamètres.
- Lorsque vous êtes satisfait du modèle, notez l’URI où l’artefact associé au modèle entraîné est enregistré. Affectez cet URI à la
model_urivariable en Cmd 12.
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.
DataFrame pandas
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()))
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.
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");
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 régression avec
Obtenir un ordinateur portable
Étapes suivantes
Informations de référence sur l’API Python AutoML.