機械学習(AI)線形回帰予測
機械学習(AI)線形回帰予測ファイル作成
引き続き機械学習(AI)線形回帰予測ファイル polyfit-190729-1206-1213 を作成していきます。
ただこのページ難解です。
その理由は私の説明が分りにくいのが原因なのです。
よって、分らなければ読み飛ばしてください。
本ファイルは
多項式フィッティングの問題点その2
のところで照会している polyfit-4 ファイルとほぼ同等です。
CHART-190729-1206-1213.xlsx
の 2019/7/29-12/6日の95個のデータから予測し、
その答えは上記ファイルのなかの12/9-12/13日の実績値と比較しています。
12/9-12/13日の実績値は予測には使用しません。
polyfit-190729-1206-1213 ファイルは以下の通りです。
import pandas as pd import numpy as np import matplotlib.pyplot as plt from mpl_finance import candlestick_ohlc xl_df = pd.read_excel( 'file/CHART-190729-1206-1213.xlsx') Open = xl_df["Open"].values High = xl_df["High"].values Low = xl_df["Low"].values Close = xl_df["Close"].values Date = xl_df["Date"].values Idx = xl_df.index Opena = np.copy(Open) Higha = np.copy(High) Lowa = np.copy(Low) Closea = np.copy(Close) Datea = np.copy(Date) Opena[-5:] = Close[-6] #① Higha[-5:] = Close[-6] Lowa[-5:] = Close[-6] Closea[-5:] = Close[-6] #② Idx95 = Idx[:-5] #③ Idx5 = Idx[-5:] #④ z = np.polyfit(Idx, Closea, 6) #⑤ p = np.poly1d(z) pl5 = np.round(p(Idx5),3) #⑥ delta = p(Idx5) - Close[-5:] del4 = np.round(delta, 3)# 4桁まで表示del4 xDate = [] xD = [] for i, key in enumerate(Date): if(i % 10 == 0): e4 = str(key)[4:10] e6 = e4.replace("-0", "/") e7 = e6.replace("-", "/") e8 = e7.lstrip("/") xDate.append(e8) xD.append(i) ohlc = zip( # 予測 Idx, Opena, Higha, Lowa, Closea) #⑦ #答え # Idx, Open, High, Low, Close) #⑧ fig = plt.figure( figsize=(8.34, 5.56)) ax = fig.add_subplot(1,1,1) ax.grid() plt.plot( Idx95, p(Idx95), Idx5, p(Idx5),'bo') candlestick_ohlc( ax, ohlc, width=0.5, alpha = 1, colorup='r', colordown='g') plt.xticks(xD, xDate) plt.title('AUS$ / JPY Chart') plt.xlabel('Date') plt.ylabel('Yen') plt.savefig( 'file/poly-191206-13.png') #⑨ print(' 月 火 水 木 金') print('予測 = ' + str(pl5)) print('結果 = ' + str(Close[-5:])) print('予-結= ' + str(del4))
polyfit-4 ファイルとの差分
- 暫定予測値設定
先頭から#①までは polyfit-4 とほぼ同じです。
#①~#②で12/9-12/13日の始値、高値、安値、終値 を12/6日の終値に置換えています。
置換えた値は
始値 Opena
高値 Higha
安値 Lowa
終値 Closea
とします。 - 日付横軸設定
#③と#④で日付横軸を設定します。
Idx95 は 0~94
Idx5 は 95~99
となります。 - フィッティング関数設定
#⑤でフィッティング関数 z = np.polyfit(Idx, Close, 6)
を設定します。
第1引数には x 軸値の配列
第2引数には y 軸値の配列
第3引数には 多項式関数の次数
を設定します。
今回次数は 6 としました。
フィッティング結果は、np.poly1d() 関数で求めることができます。
p = np.poly1d(z) - #⑥ 予測値を求める
p(Idx5)で予測値を求め、
pl5 = np.round(p(Idx5),3)
で小数点以下3桁に丸めます。
delta = p(Idx5) - Close[-5:]
で実績値との差分を求め
del4 = np.round(delta, 3)
で小数点以下3桁に丸めます。
そのあとの xDate の処理は
pyplot Excel 日付変換
を参照してください。
今回は10日ごとに日付を表示しています。 - #⑦#⑧ ローソク足表示準備
#⑦ Opena, Higha, Lowa, Closea には最後の5日間が補正されたローソク足データが、
#⑧ Open, High, Low, Close には生のローソク足データが
入っています。
よって、予測時は
ohlc = zip(Idx, Opena, Higha, Lowa, Closea)
とし、ローソク足表示をし、
ohlc = zip(Idx, Open, High, Low, Close)
とし、ローソク足表示をします。
#⑦と#⑧は同時表示はさせず、どちらかは必ずコメントしておきます。 - #⑨ 結果との差分表示
pl5 には予測値
Close[-5:] には実績(結果)値
del4 には予測値-結果値
が入っていますので、これらを表示します。
これで、機械学習(AI)線形回帰予測ファイル作成の概要説明は完了です。
Python をある程度理解されている方は読み進むことができた思いますが、
参照ぺージに飛びながら読み進んでこられた方は大変だったと思います。
ご苦労様でした。
引き続き、線形回帰予測ファイルを実行していきます。
機械学習(AI)線形回帰予測ファイル実行 に進む
機械学習(AI)線形回帰予測ファイル概要 に戻る