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 notebook montre comment entraîner un modèle de prévision de séries temporelles sur Databricks à l’aide de l’API Python AutoML. Avec un jeu de données du nombre de cas de COVID-19, vous utilisez automl.forecast() avec un horizon quotidien de 30 jours pour projeter le nombre futur de cas, puis chargez le meilleur modèle avec MLflow pour générer et représenter graphiquement les prévisions.
Spécifications
Databricks Runtime pour Machine Learning 10.0 ou version ultérieure.
Pour enregistrer les prédictions de modèle, Databricks Runtime pour Machine Learning 10.5 ou version ultérieure.
Jeu de données COVID-19
Le jeu de données contient des enregistrements pour le nombre de cas du virus COVID-19 par date aux États-Unis, avec des informations géographiques supplémentaires. L’objectif est de prévoir le nombre de cas du virus qui se produisent au cours des 30 prochains jours aux États-Unis.
import pyspark.pandas as ps
df = ps.read_csv("/databricks-datasets/COVID/covid-19-data")
df["date"] = ps.to_datetime(df['date'], errors='coerce')
df["cases"] = df["cases"].astype(int)
display(df)
Entraînement AutoML
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 et la colonne de temps.
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.
Cet exemple spécifie également :
-
horizon=30pour spécifier que AutoML devrait prévoir 30 jours à l’avenir. -
frequency="d"pour spécifier qu’une prévision doit être fournie pour chaque jour. -
primary_metric="mdape"pour spécifier la métrique à optimiser pendant l’entraînement.
Remarque
automl.forecast() est disponible uniquement sur le calcul classique.
import databricks.automl
import logging
# Disable informational messages from fbprophet
logging.getLogger("py4j").setLevel(logging.WARNING)
# Note: If you are running Databricks Runtime for Machine Learning 10.4 or below, use this line instead:
# summary = databricks.automl.forecast(df, target_col="cases", time_col="date", horizon=30, frequency="d", primary_metric="mdape")
summary = databricks.automl.forecast(df, target_col="cases", time_col="date", horizon=30, frequency="d", primary_metric="mdape", output_database="default")
Itérer sur le modèle
- Explorez les notebooks et les expériences mentionnés ci-dessus.
- Si les métriques pour le bloc-notes d’évaluation le mieux adapté sont bonnes, vous pouvez continuer avec la cellule suivante.
- 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.
- 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 dans la cellule suivante.
Afficher les résultats prédits du meilleur modèle
Note : Cette section nécessite Databricks Runtime pour Machine Learning 10.5 ou version ultérieure.
Charger des prédictions à partir du meilleur modèle
Dans Databricks Runtime pour Machine Learning 10.5 ou version ultérieure, si output_database est fourni, AutoML enregistre les prédictions à partir du meilleur modèle.
# Load the saved predictions.
forecast_pd = spark.table(summary.output_table_name)
display(forecast_pd)
Utiliser le modèle pour la prévision
Vous pouvez utiliser les commandes de cette section avec Databricks Runtime pour Machine Learning 10.0 ou version ultérieure.
Charger le modèle avec MLflow
MLflow vous permet d’importer facilement des modèles dans Python à l’aide de l'trial_id AutoML.
import mlflow.pyfunc
from mlflow.tracking import MlflowClient
run_id = MlflowClient()
trial_id = summary.best_trial.mlflow_run_id
model_uri = "runs:/{run_id}/model".format(run_id=trial_id)
pyfunc_model = mlflow.pyfunc.load_model(model_uri)
Utiliser le modèle pour effectuer des prévisions
Appelez la méthode de predict_timeseries modèle pour générer des prévisions.
Dans Databricks Runtime pour Machine Learning 10.5 ou version ultérieure, vous pouvez définir include_history=False pour obtenir les données prédites uniquement.
forecasts = pyfunc_model._model_impl.python_model.predict_timeseries()
display(forecasts)
# Option for Databricks Runtime for Machine Learning 10.5 or above
# forecasts = pyfunc_model._model_impl.python_model.predict_timeseries(include_history=False)
Tracer les points de prévision
Dans le tracé ci-dessous, la ligne noire épaisse montre le jeu de données de série chronologique et la ligne bleue est la prévision créée par le modèle.
df_true = df.groupby("date").agg(y=("cases", "avg")).reset_index().to_pandas()
import matplotlib.pyplot as plt
fig = plt.figure(facecolor='w', figsize=(10, 6))
ax = fig.add_subplot(111)
forecasts = pyfunc_model._model_impl.python_model.predict_timeseries(include_history=True)
fcst_t = forecasts['ds'].dt.to_pydatetime()
ax.plot(df_true['date'].dt.to_pydatetime(), df_true['y'], 'k.', label='Observed data points')
ax.plot(fcst_t, forecasts['yhat'], ls='-', c='#0072B2', label='Forecasts')
ax.fill_between(fcst_t, forecasts['yhat_lower'], forecasts['yhat_upper'],
color='#0072B2', alpha=0.2, label='Uncertainty interval')
ax.legend()
plt.show()
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 prévision avec l’API Python AutoML
Obtenir un ordinateur portable
Étapes suivantes
Informations de référence sur l’API Python AutoML.