Windows11 WSL2 Ubuntu Python Ⅱ
相関係数予測精度向上ファイルまとめ
ここまでで、dsc-5.py からの変更のポイントを説明しました。
引き続き、これらをまとめ相関係数予測精度向上ファイル dsc-6.py を表記します。
変更追加した部分は赤色で記載しています。
# coding: utf-8 import numpy as np import pandas as pd import matplotlib.pyplot as plt import datetime from datetime import datetime as dt from sklearn import preprocessing from mplfinance.original_flavor import candlestick_ohlc def addBusinessDays(from_date, add_days): cur_date8 = [] # 21/03/30 cur_date4 = [] # 3/30 business_days_to_add = add_days current_date = from_date while business_days_to_add > 0: current_date += datetime.timedelta(days=1) weekday = current_date.weekday() if weekday >= 5: # sunday = 6 continue #土日は以下はスキップ # 年/月/日として文字列にする #例 21/03/30 e11 = current_date.strftime("%y/%m/%d") e22 = e11.replace("/0", "/") e33 = e22[3:] # 21/ 削除 cur_date8.append(e22) cur_date4.append(e33) business_days_to_add -= 1 return cur_date8, cur_date4 xl_df = pd.read_csv("public_html/manep-w/mane_chart_go_long.csv", encoding="cp932") Open = xl_df["始値(売り)"].values High = xl_df["高値(売り)"].values Low = xl_df["安値(売り)"].values Close = xl_df["終値(売り)"].values Date = xl_df["日付"].values tstr = Date[-1] print(tstr) tdatetime = dt.strptime(tstr, '%Y/%m/%d %H:%M:%S') # tdatetime = dt.strptime(tstr, '%Y/%m/%d %H:%M') # 文字列をdatetimeに変換するのがstrptime()関数 # datetime.datetime.strptime(文字列, 書式指定文字列) lastday = addBusinessDays(tdatetime, 5) print(lastday) Idx = xl_df.index print(Idx) print(Close) print("Idx[-1]=", Idx[-1]) #4998 print("Idx[-25]=", Idx[-25]) #4974 print("Idx[-25:]=", Idx[-25:]) #4974~4998 print("ラストIdx -24~0", Idx[-25:] - Idx[-1]) #-24~0 Idx_25 = Idx[-25:] - Idx[-1] + 98 + 5 # 表示実値は0~98の99個、98シフト print("Idx_25=") print("Idx_25[0]", Idx_25[0]) print("Idx_25[-1]",Idx_25[-1]) print("Idx_25") print(Idx_25) n_25 = 25 sl_cl_t = [] for n in range(Idx[-24]): sl_cl_t = np.append(sl_cl_t, Close[n:n+n_25]).reshape(n+1,n_25) print("sl_cl_t") print(sl_cl_t) print(sl_cl_t.shape) sl_cl_20 = sl_cl_t[:,:20] print("sl_cl_20") print(sl_cl_20) # kijyu = sl_cl_t[-1][5:] kijyu = sl_cl_t[-1, 5:] print("基準値") print(kijyu) cor = np.corrcoef(kijyu, sl_cl_20) print("cor") print(cor) cor1 = cor[1:, 0] cor_max = np.amax(cor1) print('相関max=', cor_max) c_max_id = np.argmax(cor1) print('相関max_ID=', c_max_id) # print(sl_cl_20[c_max_id]) print("相関する25個のデータ") print(sl_cl_t[c_max_id]) # print("基準") # print(kijyu) # plt.plot(sl_cl_t[c_max_id]) # 相関する25個 # plt.plot(kijyu) # ラスト20個 # plt.show() # インスタンスの作成 sscaler = preprocessing.StandardScaler() x = sl_cl_t[c_max_id].reshape(-1,1) print("元データsl_cl_t[c_max_id]を1×25 次元に変換") print(x) y = sscaler.fit_transform(x) print("sl_cl_t[c_max_id]標準偏差値") print(y) # 基準 kijyu の標準偏差 s と平均値 m s = np.std(kijyu) print("標準偏差 s = ", s) m = np.mean(kijyu) print("平均値 m = ", m) w = y * s + m print("予測値 w") print(w) plt.plot(w) # 相関する25個 plt.plot(kijyu) # ラスト20個 plt.show() # 追加相関③ Date_99 = Date[-99:] print(Date_99) xDate = [] xD = [] for i, key in enumerate(Date_99): if(i % 10 == 0): e4 = str(key)[4:10] e6 = e4.replace("/0", "/") e8 = e6.lstrip("/") xDate.append(e8) xD.append(i) xDate.append(lastday[1][4]) xD.append(i + 5) #5日間の予測日の追加 print(xDate) print(xD) Idx_99 = Idx[-99:] - Idx[-99] print(Idx_99) Open_99 = Open[-99:] High_99 = High[-99:] Low_99 = Low[-99:] Close_99 = Close[-99:] ohlc = zip( Idx_99, Open_99, High_99, Low_99, Close_99) fig = plt.figure( figsize=(8.34, 5.56)) ax = fig.add_subplot(1,1,1) ax.grid() 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.plot(Idx_25, w) # plt.show() plt.savefig( '/home/yamada/public_html/manep-img/mane_chart_dsc.png') # データ保存 w_5 = np.round(w[-5:], 3) # 3桁まで表示 # print(w_5) cor_max100 = np.round(cor_max * 100, 3) w_5 = np.append(w_5, cor_max100) # print(w_5) w_5 = pd.DataFrame(w_5) print(w_5) lastday_me = np.append(lastday[0], '信頼度(%)') lastday_pd = pd.DataFrame(lastday_me) print(lastday_pd) df_concat = pd.concat([lastday_pd, w_5], axis = 1) print(df_concat) df_concat.to_csv( '/home/yamada/public_html/manep-img/mane_chart_dsc.csv', header=False, index=False) # yamada@yama:~$ conda activate # (base) yamada@yama:~$ python3 public_html/dsc-6.py
上記ファイルを windows 側で作成します。
上記内容をすべてをコピ-し、Python ファイルを作成します。
自分の PC Windows で TeraPad 等を使用して作成できたらファイル名を dsc-6.py として保存します。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
保存先はホスト Wimdows OS の
Linux \Ubuntu-22.04 \\wsl.localhost フォルダ
Linux/Ubuntu-22.04/home/yamada/public_html/dsc-6.py
とします。
ここまでで、相関係数予測精度向上ファイルを作成できました。
引き続き、このファイルの動作確認をしていきます。