はじめに
AutoGluon v0.5から新たに時系列予測が追加されたので使ってみました。時系列予測といえば同じawslabsが開発しているGluonTSというのもあります。AutoGluonの時系列予測は裏でGluonTSを使用しているようです。結果
以前GluonTSで使用したのと同じデータを用いて予測してみました。touch-sp.hatenablog.com
結果は冒頭の図になります。
Pythonスクリプト
インポート
import pandas as pd from matplotlib import pyplot as plt from autogluon.timeseries import TimeSeriesPredictor, TimeSeriesDataFrame
データの準備
url = 'https://raw.githubusercontent.com/numenta/NAB/master/data/realTweets/Twitter_volume_AMZN.csv' df = pd.read_csv(url, parse_dates = ["timestamp"]) df['columnid'] = 0 test_data = TimeSeriesDataFrame.from_data_frame( df, id_column = 'columnid', timestamp_column="timestamp", ) prediction_length = 24 train_data = test_data.slice_by_timestep(slice(-prediction_length))
学習
predictor = TimeSeriesPredictor( path= 'autogluon-forecast', target = 'value', prediction_length = prediction_length, eval_metric = 'MAPE' ) predictor.fit(train_data = train_data)
予測
predictions = predictor.predict(train_data)
結果の図示
train_data_value = train_data.loc[0]['value'] pred_value = predictions.loc[0] actual_value = test_data.loc[0]['value'][-prediction_length:] plt.plot(train_data_value[-100:], label = 'Training Data', color = 'blue') plt.plot(pred_value['mean'], label = 'Mean Forecasts', color = 'red') plt.plot(actual_value, label = 'Actual', color = 'green') plt.fill_between( pred_value.index, pred_value['0.1'], pred_value['0.9'], color = 'red', alpha = 0.1 ) plt.legend() plt.show()
動作環境
Ubuntu 20.04 on WSL2 Python 3.9.5