機械学習(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 ファイルとの差分

  1. 暫定予測値設定

    先頭から#①までは polyfit-4 とほぼ同じです。
    #①~#②で12/9-12/13日の始値、高値、安値、終値 を12/6日の終値に置換えています。
    置換えた値は
    始値 Opena
    高値 Higha
    安値 Lowa
    終値 Closea
    とします。

  2. 日付横軸設定

    #③と#④で日付横軸を設定します。
    Idx95 は 0~94
    Idx5 は 95~99
    となります。

  3. フィッティング関数設定

    #⑤でフィッティング関数 z = np.polyfit(Idx, Close, 6)
    を設定します。
    第1引数には x 軸値の配列
    第2引数には y 軸値の配列
    第3引数には 多項式関数の次数
    を設定します。
    今回次数は 6 としました。
    フィッティング結果は、np.poly1d() 関数で求めることができます。
    p = np.poly1d(z)

  4. #⑥ 予測値を求める

    p(Idx5)で予測値を求め、
    pl5 = np.round(p(Idx5),3)
    で小数点以下3桁に丸めます。
    delta = p(Idx5) - Close[-5:]
    で実績値との差分を求め
    del4 = np.round(delta, 3)
    で小数点以下3桁に丸めます。
    そのあとの xDate の処理は
    pyplot Excel 日付変換
    を参照してください。
    今回は10日ごとに日付を表示しています。

  5. #⑦#⑧ ローソク足表示準備

    #⑦ Opena, Higha, Lowa, Closea には最後の5日間が補正されたローソク足データが、
    #⑧ Open, High, Low, Close には生のローソク足データが
    入っています。
    よって、予測時は
    ohlc = zip(Idx, Opena, Higha, Lowa, Closea)
    とし、ローソク足表示をし、
    ohlc = zip(Idx, Open, High, Low, Close)
    とし、ローソク足表示をします。
    #⑦と#⑧は同時表示はさせず、どちらかは必ずコメントしておきます。

  6. #⑨ 結果との差分表示

    pl5 には予測値
    Close[-5:] には実績(結果)値
    del4 には予測値-結果値
    が入っていますので、これらを表示します。


これで、機械学習(AI)線形回帰予測ファイル作成の概要説明は完了です。
Python をある程度理解されている方は読み進むことができた思いますが、 参照ぺージに飛びながら読み進んでこられた方は大変だったと思います。
ご苦労様でした。
引き続き、線形回帰予測ファイルを実行していきます。


機械学習(AI)線形回帰予測ファイル実行 に進む
機械学習(AI)線形回帰予測ファイル概要 に戻る

GoDollar に戻る