目的

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

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

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

Pythondで機械学習とか

機械学習で株とか!?

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

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


参照サイト

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


参照サイトの解説

参照サイトでは具体的な解説は行われていないので、自分で調査していきます。
また、自分の環境では参照先のプログラムだとエラーになり、少し修正が必要でした。がここではそれは載せません。
大した修正ではないですし、
先に言ってしまうと、今回の方法は利用しないので、株価予測のチュートリアル的な感じに捉えていますし、見てくれている方も受け取ってもらえれば。


import部分について

import csv
import numpy as np
from sklearn.svm import SVR
import matplotlib.pyplot as plt

ラズパイにnumpysklearnをインストールするのが結構やっかいだったりする。


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とか環境が原因のようです。


それで今後についてですが、
他の機械学習ライブラリについても勉強が必要だと思いました。
もう少し、ネットで調査しようと思いました。


次回

[ラズパイ]プロジェクトS – No.2


世界一やさしい 株の教科書 1年生