初めての機械学習で株価の未来予測
初めての機械学習で株価の未来予測
10cmです。こんにちは。今回は機械学習について記載していきます。
私事ですが、最近株をはじめました。本件とは別に、株価を確認するためのスマホアプリを休日に作成しております。
せっかく株価データをAPIを使って取得しているため、他にも使えないかと思い、機械学習に走りました。
株価の未来予測なんて他の方がたくさんやられていますが、今回はメモ感覚で記載します。
今回はサイトの実装を参考にして(パクって)実装します。
環境
- CentOS 7
- python3.6
- scikit-learn
- pandas
概要
予測したい日付の株価(終値、以下株価)を、前n日分の株価を用いて予測します。アルゴリズムは、決定木を使用します。
実装
# 株価データの取得 orign_data = getOneDay(6752) # リターンインデックス(丸パク) returns = pd.Series(orign_data).pct_change() ret_index = (1 + returns).cumprod() ret_index[0] = 1 # 教師データの作成 x, y = createData(ret_index.tolist()) # 予測データと答え xx = x.pop(-1) yy = y.pop(-1) # 決定木(丸パク) clf = tree.DecisionTreeClassifier() clf.fit(x, y) result_y = getResult(xx, clf) print('期待値 :{0}'.format(yy)) print('結果 :{0}'.format(result_y))
orign_data
株価データはmysqlでデータとして保持しているため、銘柄コードのデータを日付順にソートして取得しています。ret_index
リターンインデックス、と言うものが何を表しているのかよくわかっていません。生の株価データを利用するより割合?で教育データを作った方が良いとのこと。
x, y
xには、教育に利用するデータ(30日分)、yにはその時の結果がリストで入っています。x = [[100, 111, 112, ・・・ , 120, 115], [] ・・・・ []] y = [1, 0, 0, 1, ・・・, 1, 0] # 1: 上がった、 0: 下がった
clf
clfには、scikit-learnで提供されている、決定木のオブジェクトが入ります。clf.fit(x, y)とすることで、学習が行われます。
clf.predict(予測用データ)とすることで、予測結果が返ってきます。
最後に、答え合わせを行っています。
結果
学習データの数によって、1になったり0になったり。。。(当たりまえか)わかってはいましたが、株価だけではやはり教育データとして決定打にかけている。
外的要因(ニュースなど)を用いた株価予測などを今後やっていこうと思います。
参考
機械学習で未来を予測する - scikit-learn の決定木で未来の株価を予測