Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento ukázkový poznámkový blok ukazuje, jak trénovat model prognózování časových řad v Databricks pomocí rozhraní API pro Python AutoML. Pomocí datové sady s počtem případů COVID-19 zavoláte automl.forecast() s denním horizontem 30 dnů, abyste mohli promítnout počty budoucích případů a poté načíst nejlepší model pomocí MLflow pro vygenerování a vykreslení prognóz.
Požadavky
Databricks Runtime pro Machine Learning 10.0 nebo novější.
Pokud chcete uložit predikce modelu, je nutné používat Databricks Runtime pro Machine Learning verze 10.5 nebo vyšší.
Datová sada COVID-19
Datová sada obsahuje záznamy o počtu případů viru COVID-19 podle data v USA s dalšími zeměpisnými informacemi. Cílem je předpovědět, kolik případů viru nastane během příštích 30 dnů v USA.
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)
Trénování AutoML
Následující příkaz spustí spuštění AutoML. Musíte zadat sloupec, který má model předpovědět v argumentu target_col a sloupci času.
Po dokončení spuštění můžete pomocí odkazu na nejlepší zkušební poznámkový blok prozkoumat trénovací kód.
Tento příklad také určuje:
-
horizon=30a určete, že autoML by mělo předpovídat 30 dní do budoucnosti. -
frequency="d"určete, že se má pro každý den poskytnout prognóza. -
primary_metric="mdape"pro určení metriky, kterou chcete optimalizovat během trénování.
Poznámka:
automl.forecast() je k dispozici pouze na klasických výpočetních prostředcích.
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")
Iterujte na modelu
- Prozkoumejte poznámkové bloky a experimenty uvedené výše.
- Pokud metriky pro nejlepší zkušební poznámkový blok vypadají dobře, můžete pokračovat další buňkou.
- Pokud chcete vylepšit model vygenerovaný nejlepší zkušební verzí:
- Přejděte do poznámkového bloku s nejlepší zkušební verzí a naklonujte ho.
- Podle potřeby upravte poznámkový blok a vylepšete model.
- Až budete s modelem spokojení, poznamenejte si identifikátor URI, ve kterém je uložen artefakt natrénovaného modelu. Přiřaďte tento identifikátor URI proměnné
model_uriv další buňce.
Zobrazení predikovaných výsledků z nejlepšího modelu
Note: Tato část vyžaduje Databricks Runtime pro Machine Learning 10.5 nebo novější.
Načíst předpovědi z nejlepšího modelu
V Databricks Runtime pro strojové učení verze 10,5 nebo vyšší, pokud je poskytnuto output_database, AutoML uloží předpovědi z nejlepšího modelu.
# Load the saved predictions.
forecast_pd = spark.table(summary.output_table_name)
display(forecast_pd)
Použití modelu pro prognózování
Příkazy v této části můžete použít s modulem Databricks Runtime pro Machine Learning 10.0 nebo vyšší.
Načtení modelu pomocí MLflow
MLflow umožňuje snadno importovat modely zpět do Python pomocí 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)
Použití modelu k vytváření prognóz
Volejte metodu modelu pro vygenerování prognóz.
V Databricks Runtime pro Machine Learning 10.5 nebo novější můžete nastavit include_history=False, abyste získali pouze predikovaná data.
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)
Vykreslete předpovězené body
V následujícím grafu zobrazuje tlustá černá čára datovou sadu časových řad a modrá čára je prognóza vytvořená modelem.
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()
Registrace a nasazení modelu
Model natrénovaný autoML můžete zaregistrovat a nasadit stejně jako jakýkoli jiný model v registru modelů MLflow. Viz Zaznamenání, načtení a registrace modelů MLflow.
Řešení potíží: No module named pandas.core.indexes.numeric
Při poskytování modelu vytrénovaného autoML pomocí služby Model Serving se může zobrazit chyba No module named pandas.core.indexes.numeric. K tomu dochází v případě, že se pandas verze používaná službou AutoML liší od verze v prostředí koncového bodu obsluhy modelu. Řešení je následující:
-
Stáhněte si skript add-pandas-dependency.py. Skript upraví
requirements.txtaconda.yamlpro protokolovaný model, aby připnulpandas==1.5.3. - Upravte skript tak, aby zahrnoval
run_idběh MLflow, ve kterém byl model zaznamenán. - Znovu zaregistrujte model.
- Obsluha nové verze modelu
Příklad notebooku
Trénování modelů prognóz pomocí rozhraní Python API AutoML
Získání poznámkového bloku
Další kroky
Referenční informace k rozhraní PYTHON API pro AutoML