Pythonで機械学習といえばScikit-learn、時系列予測といえばstatsmodels。まずは、コマンドプロンプトで次のコマンドでscikit-learnをインストールした。
>pip install -U scikit-learn Downloading/unpacking scikit-learn from https://pypi.python.org/packages/2.7/s/s cikit-learn/scikit_learn-0.15.2-cp27-none-win_amd64.whl#md5=f40eee218b45a2c3058a cd60ccfeda0c Installing collected packages: scikit-learn Found existing installation: scikit-learn 0.14.1 Uninstalling scikit-learn: Successfully uninstalled scikit-learn Successfully installed scikit-learn Cleaning up...
次にstatsmodelsをインストールした。
>easy_install statsmodels Searching for statsmodels Best match: statsmodels 0.5.0 Adding statsmodels 0.5.0 to easy-install.pth file Using c:\anaconda\lib\site-packages Processing dependencies for statsmodels Finished processing dependencies for statsmodels
次にstatsmodelsのARIMAを使ってみる。
import numpy as np from statsmodels.tsa import arima_model import matplotlib.pyplot as plt data=randn(200,1) data = np.cumsum(data) results=arima_model.ARIMA(data[:190],order = [4,0,0]).fit() plt.clf() plt.plot(data) plt.plot(results.predict(start=0,end=200)) plt.legend(['data','predicted'])
ランダムに生成した200ステップのデータのうち190ステップまで訓練データとして使ってARIMA(p,d,q)モデルを学習し、全データをテストデータとして予測している。予測結果は次の画像のようになった。