Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo notebook di esempio illustra come eseguire il training di un modello di previsione di serie temporali in Databricks usando l'API di Python AutoML. Usando un set di dati del conteggio dei casi di COVID-19, si utilizza automl.forecast() con un orizzonte giornaliero di 30 giorni per proiettare i casi futuri, quindi si carica il modello migliore con MLflow per generare e tracciare le stime.
Requisiti
Databricks Runtime per Machine Learning 10.0 o versione successiva.
Per salvare le predizioni del modello, è necessario utilizzare Databricks Runtime per Machine Learning versione 10.5 o successiva.
Set di dati COVID-19
Il set di dati contiene record per il numero di casi del virus COVID-19 per data negli Stati Uniti, con informazioni geografiche aggiuntive. L'obiettivo è prevedere il numero di casi del virus che si verificheranno nei prossimi 30 giorni negli Stati Uniti.
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)
Addestramento AutoML
Il comando seguente avvia un'esecuzione autoML. È necessario specificare la colonna che il modello deve prevedere nell'argomento target_col e nella colonna temporale.
Al termine dell'esecuzione, puoi seguire il collegamento per il notebook di prova migliore e esaminare il codice di addestramento.
Questo esempio specifica anche:
-
horizon=30per specificare che AutoML dovrebbe prevedere 30 giorni in futuro. -
frequency="d"per specificare che deve essere fornita una previsione per ogni giorno. -
primary_metric="mdape"per specificare la metrica da ottimizzare durante il training.
Nota
automl.forecast() è disponibile solo nel calcolo classico.
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")
Iterare sul modello
- Esplorare i notebook e gli esperimenti collegati sopra.
- Se le metriche per il notebook di prova sembrano positive, è possibile continuare con la cella successiva.
- Per migliorare il modello generato dal migliore tentativo:
- Vai al notebook con la miglior prova e clonalo.
- Modificare il notebook in base alle esigenze per migliorare il modello.
- Quando si è soddisfatti del modello, prendere nota dell'URI in cui viene registrato l'artefatto per il modello sottoposto a training. Assegnare questo URI alla
model_urivariabile nella cella successiva.
Visualizzare i risultati stimati dal modello migliore
Note: Questa sezione richiede Databricks Runtime per Machine Learning 10.5 o versione successiva.
Caricare stime dal modello migliore
In Databricks Runtime per Machine Learning 10.5 o versione successiva, se viene fornito output_database, AutoML salva le stime dal modello migliore.
# Load the saved predictions.
forecast_pd = spark.table(summary.output_table_name)
display(forecast_pd)
Usare il modello per la previsione
È possibile usare i comandi in questa sezione con Databricks Runtime per Machine Learning 10.0 o versione successiva.
Caricare il modello con MLflow
MLflow consente di importare facilmente modelli in Python usando AutoML trial_id .
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)
Usare il modello per effettuare previsioni
Chiamare il predict_timeseries metodo del modello per generare previsioni.
In Databricks Runtime per Machine Learning 10.5 o versione successiva è possibile impostare include_history=False per ottenere solo i dati stimati.
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)
Tracciare i punti previsti
Nel tracciato seguente la linea nera spessa mostra il set di dati time series e la linea blu è la previsione creata dal modello.
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()
Registrare e distribuire il modello
È possibile registrare e distribuire un modello sottoposto a training da AutoML come qualsiasi altro modello nel Registro modelli MLflow. Consulta Registrare, caricare e registrare modelli MLflow.
Risoluzione dei problemi relativi: No module named pandas.core.indexes.numeric
Quando si serve un modello addestrato automaticamente con Mosaic AI Model Serving, è possibile che venga visualizzato l'errore No module named pandas.core.indexes.numeric. Ciò si verifica quando la pandas versione usata da AutoML è diversa da quella nell'ambiente endpoint di gestione del modello. Per risolvere:
- Scaricare lo script add-pandas-dependency.py. Lo script modifica
requirements.txteconda.yamlper fissarepandas==1.5.3al modello registrato. - Modificare lo script per includere l'ID
run_iddell'esecuzione di MLflow in cui è stato registrato il modello. - Registrare nuovamente il modello.
- Distribuire la nuova versione del modello.
Notebook di esempio
Eseguire l'addestramento di modelli di previsione con l'API AutoML di Python
Passaggi successivi
Informazioni di riferimento sulle API Python autoML.