ぺーぱーの日々

上機嫌でいること、夢中でいることを目標に、今日も色んなことに手を出します。

MENU

機械学習をしようと思ったら、奇怪学習になりました。

以下のUdemyの講座を参考に、株価の機械学習をしようと思ったら、どうもうまくいかなくて奇怪学習になった話。

 

内容

過去の株価データから将来の株価を予測する。

 

期待するアウトプット

予測値を含んだ株価チャート

(お手本では、こんなの。緑が実測値、黄色が予測値)

実装したコード

# 機械学習(マシンラーニング)
df_nojima['label'] = df_nojima['Close'].shift(-30)
df_nojima.tail(20)

# label列を削除
X = np.array(df_nojima.drop('label', axis=1))
X = sklearn.preprocessing.scale(X)

# 学習精度を予測
predict_data = X[-30:]
X = X[:-30]
y = np.array(df_nojima['label'])
y = y[:-30]

X_train, X_test, y_train, y_test = sklearn.model_selection.train_test_split(
X, y, test_size = 0.2)

lr = sklearn.linear_model.LinearRegression()
lr.fit(X_train,y_train)

accuracy = lr.score(X_test, y_test)
accuracy

# 予測値を算出
predicted_data = lr.predict(predict_data)
predicted_data


# 株価の予測値を含んだチャートを描画
df_nojima['Predict'] = np.nan

last_date = df_nojima.iloc[-1].name

one_day = 1800
next_unix = last_date.timestamp() + one_day

for data in predicted_data:
next_date = datetime.datetime.fromtimestamp(next_unix)
next_unix += one_day
df_nojima.loc[next_date] = np.append([np.nan] * (len(df_nojima.columns) - 1), data)

df_nojima['Close'].plot(figsize=(15, 6), color='green')
df_nojima['Predict'].plot(figsize=(15, 6), color='orange')
plt.show()

得られたアウトプット

まとめ

なぜか、2015年以前の株価が黄色(予測値)に。忠実にお手本コードを模写したつもりだったが、眠気に負けて「まいっか」提出。せっかく最後までコードを打ち終えたので、もったいない精神から記録に残すことに。明日あらためて原因の追究、正しいアウトプットを提出したいと思う。