Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a példajegyzetfüzet bemutatja, hogyan taníthat be idősorozat-előrejelzési modellt a Databricksen az AutoML Python API használatával. A COVID-19 esetszám adathalmaz használatával 30 napos napi előrejelzéssel meghívja a automl.forecast() függvényt a jövőbeli esetszámok előrejelzéséhez, majd betölti a legjobb modellt az MLflow-val az előrejelzések generálásához és ábrázolásához.
Requirements
Databricks Runtime a Machine Learning 10.0-s vagy újabb verziójához.
A modell-előrejelzések mentéséhez a Databricks Runtime for Machine Learning 10.5-ös vagy újabb verzióval lehet rendelkező rendszer szükséges.
COVID-19-adatkészlet
Az adatkészlet az USA-ban dátum szerint tartalmazza a COVID-19 vírus eseteinek számát, további földrajzi adatokkal. A cél az előrejelzés, hogy hány esetben fordul elő a vírus az elkövetkező 30 napban az USA-ban.
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)
AutoML-betanítás
Az alábbi parancs elindít egy AutoML-futtatási parancsot. Meg kell adnia azt az oszlopot, amelyet a modellnek előre kell jeleznie az target_col argumentumban és az időoszlopban.
A futtatás befejezése után a legjobb próbaverziós jegyzetfüzetre mutató hivatkozást követve megvizsgálhatja a betanítási kódot.
Ez a példa a következőket is megadja:
-
horizon=30annak megadásához, hogy az AutoML-nek 30 napot kell előre jeleznie a jövőben. -
frequency="d"annak meghatározásához, hogy minden napra vonatkozóan előrejelzést kell-e adni. -
primary_metric="mdape"a betanítás során optimalizálni kívánt metrika megadásához.
Feljegyzés
automl.forecast() csak klasszikus számítási környezetben érhető el.
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")
Iteráljuk a modellt
- Megismerheti a fent hivatkozott jegyzetfüzeteket és kísérleteket.
- Ha a legjobb próbaverziós jegyzetfüzet metrikái jól néznek ki, folytathatja a következő cellával.
- Ha javítani szeretne a legjobb próbaverzió által létrehozott modellen:
- Nyissa meg a jegyzetfüzetet a legjobb próbaverzióval, és klónozza.
- A modell továbbfejlesztéséhez szükség szerint szerkessze a jegyzetfüzetet.
- Ha elégedett a modellel, jegyezze fel az URI-t, ahol a betanított modell összetevőjének naplózása történik. Rendelje hozzá ezt az URI-t a
model_urikövetkező cellában lévő változóhoz.
A legjobb modell előrejelzett eredményeinek megjelenítése
Megjegyzés: Ehhez a szakaszhoz a 10.5-ös vagy újabb Databricks Futtatókörnyezet szükséges a gépi tanuláshoz.
Előrejelzések betöltése a legjobb modellből
A Databricks Runtime for Machine Learning 10.5 vagy újabb verziójában, ha output_database van megadva, az AutoML menti az előrejelzéseket a legjobb modellből.
# Load the saved predictions.
forecast_pd = spark.table(summary.output_table_name)
display(forecast_pd)
A modell használata előrejelzéshez
Az ebben a szakaszban található parancsokat a Databricks Runtime Machine Learning 10.0-s vagy újabb verziójához használhatja.
A modell betöltése az MLflow használatával
Az MLflow lehetővé teszi, hogy egyszerűen importáljon vissza modelleket a Pythonba az AutoML trial_id használatával.
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)
Előrejelzések készítése a modell használatával
Hívja meg a predict_timeseries modellmetódust az előrejelzések létrehozásához.
A Databricks Runtime for Machine Learning 10.5 vagy újabb verziójában beállíthatja include_history=False csak az előrejelzett adatok lekérésére.
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)
Az előrejelzett pontok ábrázolása
Az alábbi ábrán a vastag fekete vonal az idősor adatkészletét jeleníti meg, a kék vonal pedig a modell által létrehozott előrejelzés.
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()
A modell regisztrálása és üzembe helyezése
Regisztrálhat és üzembe helyezhet egy AutoML által betanított modellt, mint bármely más modellt az MLflow Modellregisztrációs adatbázisában. Lásd: MLflow-modellek naplózása, betöltése és regisztrálása.
Hibaelhárítás: No module named pandas.core.indexes.numeric
Ha AutoML-betanított modellt szolgál ki a Model Service szolgáltatással, a hiba No module named pandas.core.indexes.numericjelenhet meg. Ez akkor fordul elő, ha az pandas AutoML által használt verzió eltér a végpontkörnyezetet kiszolgáló modell verziójától. A probléma megoldása:
- Töltse le a add-pandas-dependency.py szkriptet. A szkript szerkeszti a
requirements.txtésconda.yamlelemeket a naplózott modell számára, hogy rögzítse apandas==1.5.3. - Szerkessze a szkriptet annak az MLflow-futtatásnak a
run_idbeillesztéséhez, ahol a modellt naplózták. - Regisztrálja újra a modellt.
- Az új modellverzió kiszolgálása.