Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Contoh notebook ini memperlihatkan cara melatih model prakiraan rangkaian waktu pada Databricks menggunakan AutoML Python API. Dengan menggunakan himpunan data jumlah kasus COVID-19, Anda memanggil automl.forecast() dengan cakrawala harian 30 hari untuk memproyeksikan jumlah kasus di masa mendatang, lalu memuat model terbaik dengan MLflow untuk menghasilkan dan memplot prakiraan.
Persyaratan
Databricks Runtime untuk Pembelajaran Mesin 10.0 atau lebih tinggi.
Untuk menyimpan prediksi model, gunakan Databricks Runtime versi 10.5 atau lebih tinggi untuk Pembelajaran Mesin.
Himpunan data COVID-19
Himpunan data berisi catatan untuk jumlah kasus virus COVID-19 berdasarkan tanggal di AS, dengan informasi geografis tambahan. Tujuannya adalah untuk memperkirakan berapa banyak kasus virus yang akan terjadi selama 30 hari ke depan di AS.
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)
Pelatihan AutoML
Perintah berikut memulai eksekusi AutoML. Anda harus menyediakan kolom yang harus diprediksi oleh model dalam argumen target_col dan menyediakan kolom waktu.
Setelah proses selesai, Anda bisa mengikuti tautan ke buku catatan percobaan terbaik untuk memeriksa kode pelatihan.
Contoh ini juga menentukan:
-
horizon=30untuk menentukan bahwa AutoML harus memperkirakan 30 hari ke depan. -
frequency="d"untuk menentukan bahwa prakiraan harus disediakan untuk setiap hari. -
primary_metric="mdape"untuk menentukan metrik yang akan dioptimalkan selama pelatihan.
Catatan
automl.forecast() hanya tersedia pada komputasi klasik.
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")
Lakukan iterasi pada model
- Jelajahi notebook dan eksperimen yang ditautkan di atas.
- Jika metrik untuk buku catatan percobaan terbaik terlihat bagus, Anda dapat melanjutkan ke sel berikutnya.
- Jika Anda ingin meningkatkan model yang dihasilkan oleh uji coba terbaik:
- Buka buku catatan dengan percobaan terbaik dan kloning.
- Edit buku catatan seperlunya untuk meningkatkan model.
- Setelah Anda merasa puas dengan modelnya, catatlah URI di mana artefak model terlatih tersebut dicatatkan. Tetapkan URI ini ke
model_urivariabel di sel berikutnya.
Menampilkan hasil yang diprediksi dari model terbaik
Note: Bagian ini memerlukan Databricks Runtime untuk Pembelajaran Mesin 10.5 atau lebih tinggi.
Memuat prediksi dari model terbaik
Dalam Databricks Runtime untuk Pembelajaran Mesin 10.5 atau lebih tinggi, jika output_database disediakan, AutoML menyimpan prediksi dari model terbaik.
# Load the saved predictions.
forecast_pd = spark.table(summary.output_table_name)
display(forecast_pd)
Menggunakan model untuk prakiraan
Anda dapat menggunakan perintah di bagian ini dengan Databricks Runtime untuk Pembelajaran Mesin 10.0 atau lebih tinggi.
Muat model dengan MLflow
MLflow memungkinkan Anda untuk dengan mudah mengimpor model kembali ke Python dengan menggunakan 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)
Gunakan model untuk membuat prakiraan
predict_timeseries Panggil metode model untuk menghasilkan prakiraan.
Di Databricks Runtime untuk Pembelajaran Mesin 10,5 atau lebih tinggi, Anda dapat mengatur include_history=False untuk mendapatkan data yang diprediksi saja.
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)
Grafik titik yang diprediksi
Dalam plot di bawah ini, garis hitam tebal menunjukkan himpunan data rangkaian waktu, dan garis biru adalah prakiraan yang dibuat oleh model.
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()
Mendaftarkan dan menyebarkan model
Anda dapat mendaftar dan menyebarkan model yang dilatih oleh AutoML seperti model lain di MLflow Model Registry. Lihat Mencatat, memuat, dan mendaftarkan model MLflow.
Pemecahan masalah: No module named pandas.core.indexes.numeric
Ketika menyajikan model yang telah dilatih dengan AutoML menggunakan Mosaic AI Model Serving, Anda mungkin melihat kesalahan No module named pandas.core.indexes.numeric. Ini terjadi ketika versi pandas yang digunakan oleh AutoML berbeda dari versi dalam lingkungan penyajian model di titik akhir. Untuk menyelesaikan:
- Unduh skrip add-pandas-dependency.py. Untuk menyematkan
pandas==1.5.3, skrip mengeditrequirements.txtdanconda.yamlpada model yang telah dicatat. - Edit skrip untuk menyertakan
run_iddari run MLflow saat model dicatat. - Daftarkan ulang model.
- Layani versi model baru.
Contoh buku catatan
Melatih model prakiraan dengan Api Python AutoML
Ambil buku catatan
Langkah berikutnya
Referensi API Python AutoML.