AIを使った株価予想プログラムを改善しました
前回作成した株価予想AIは精度がいまいちでした。原因としては株価自体を学習データにしていたため、株価の変動を学習できていなかったのではないかと推定しています。そこで、前日との価格差を学習データにすることにしました。これであれば、株価の変動を学習できるはずです。
import pandas as pd
import os
# データ取得
tmp = pd.read_csv('1570_2018.csv', header=None)
# 行数を取得
size = len(tmp)
# 前日との価格差を取得する
diff_list = list()
for i in range(size):
if (i > 1):
diff = tmp[4][i] - tmp[4][i-1]
diff_list.append(diff)
X_list = list()
Y_list = list()
diff_size = len(diff_list)
for i in range(diff_size):
if (i > 3):
day_price = diff_list[i]
day_before_1 = diff_list[i-1]
day_before_2 = diff_list[i-2]
day_before_3 = diff_list[i-3]
if (day_price > 0):
flag = 1
else:
flag = 0
# 学習データリストに追加
X_list.append([day_before_3, day_before_2, day_before_1])
# 教師データリストに追加
Y_list.append(flag)
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.utils.np_utils import to_categorical
from sklearn.model_selection import train_test_split
model = Sequential()
model.add(Dense(3, input_dim = 3, activation='sigmoid'))
model.add(Dense(12, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(6, activation='relu'))
model.add(Dense(2, activation='softmax')) # 最終的に2カテゴリに分類
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])
X = np.array(X_list)
Y = to_categorical(Y_list)
# X_train, X_test, Y_train, Y_test = train_test_split(X, Y,test_size=0.2)
model.fit(X, Y, epochs=210, batch_size=32, verbose=0)プログラムは、こんな形に修正しましたが、精度はイマイチ向上しません。何故向上しないのか考えていたのですが、そもそも過去の株価からは未来の株価を予想できないのではないかと思ったりするのです。常にほぼほぼ50%になるのは、それを示しているのかもしれません。
