目的

新しくプロジェクトをスタートします。
その名もプロジェクトS

内容ですが
ラズパイにインストールしたPythonで株価を予想してみようと思います。
SはStock=株

経緯は
せっかくラズパイにPythonをインストールしたので何かやろう

Pythondで機械学習とか

機械学習で株とか!?

そいつの株のいきさつ気になるな。

知人が株やっていて、今年も好調とのこと。


参照サイト

以下のサイトを参照しました。
プログラムほぼ流用なので、この記事では記載しませんが、
結構似たようなものが、いろんなサイトで出回っているので、何かのサンプルなのかもしれません。
Pythonで株価を機械学習モデルに投入して、グラフに表示してみる


参照サイトの解説

参照サイトでは具体的な解説は行われていないので、自分で調査していきます。
参照先に書いてある通り、予測はできない。現状の最適モデルを表示させているだけ


get_data関数について

csvファイルからデータを取得・抽出する関数です。
> with open(filename, ‘r’) as csvfile:

filenameを読み込みモードでオープン


next(csvFileReader)

1行読み飛ばし


dates.append(int(row[0].split(‘-’)[2]))

1行目の単語を-で区切って3つ目の単語をdatesに追加


prices.append(float(row[1]))

2行目の数値をpricesに追加


predict_price関数について

抽出したデータを機械学習に適応させる関数です。
> np.reshape(dates, (len(dates), 1))

numpyというライブラリのreshapeという関数でdatesを配列形式にしている


SVR(kernel=‘linear’, C=1e3)
SVR(kernel=‘poly’, C=1e3, degree=2)
SVR(kernel=‘rbf’, C=1e3, gamma=0.1)
svr_lin.fit(dates, prices)
svr_poly.fit(dates, prices)
svr_rbf.fit(dates, prices)

サポートベクトル回帰の設定とそれをデータに適応させている。

サポートベクトル回帰 : かなりざっくり書くと、機械学習の1つで、データを用いて、規則やモデルを導く手法の1つ。

  • kernel=‘linear’ : 線形 → データを直線だけで表す。
  • kernel=‘poly’ : 多項式カーネル → d次の多項式で表す。
  • kernel=‘rbf’ : RBFカーネル → ガウス放射基底関数というもので表す。

    C=1e3、degree=2、gamma=0.1は最適値


plt.scatter(dates, prices, color=‘black’, label=‘Data’)

散布図の設定、データのプロット


plt.plot(dates, svr_rbf.predict(dates), color=‘red’, label=‘RBF model’)
plt.plot(dates, svr_lin.predict(dates), color=‘green’, label=‘Linear model’)
plt.plot(dates, svr_poly.predict(dates), color=‘blue’, label=‘Polynomial model’)

グラフの設定、機械学習データのプロット


plt.legend()

凡例枠の設定


plt.show()

グラフ表示


グラフについて

自分でもグラフを出力してみました。


参照先ではlinear、polyともにダメと書いているけど、自分としてはrbfがダメで、polyはまだマシかなと思っているのですが、
やはりこのグラフからは予想は立てにくいと思いました。


今後について

そもそも、ラズパイだと最初のインポート(ライブラリインストール)の時点で結構苦戦する。
エラーのオンパレード。

pythonは良い言語だと思うのですが、ライブラリインストールがうまくいかないことが多い。
pythonが原因というよりも、ラズパイのCPUとか環境が原因のようだけど。

今後も新しくライブラリをインストールしていくと思うので、やり方を考えないとその都度苦労してしまう。


また、他の機械学習ライブラリについても勉強が必要だと思いました。
必要なデータ数は何日分が良いのかとかは、機械学習の知識なのか、株のほうの知識が必要なのか。