Windows11 WSL2 Ubuntu Python Ⅱ
相関係数予測精度向上
ここまでで相関係数予測ファイルが完成しました。
引き続き、相関係数予測精度を向上させたいと思います。
今まで相関係数予測で使用してきた豪ドル/円のデータ mane_chart_go.csv はほぼ100個しかありませんでした。
これをもっと大きなデータにして予測精度を上げることにします。
とは言うものの簡単ではありません。
まずは、大容量のデータが必要です。
マネーパートナーズのサイトに入るとダウンロードできるのですが会員登録が必要です。
はじめての方へ
に行って登録してみて下さい。
ちょっと古いものになりますが、下記から大容量データ
mane_chart_go_long.csv
をダウンロードすることができるようにしました。
これを manep-w フォルダを作成し、
Linux/Ubuntu-22.04/home/yamada/public_html/manep-w/mane_chart_go_long.csv
として保存してください。
相関係数予測精度向上ファイル作成
相関係数予測精度向上ファイルは
相関係数予測ファイルまとめ
で作成した dsc-5.py をもとに変更追加していきます。
大きな変更点は、表示するデータは最新の100個のデータと
25個の予測データ
(前20個は現データとの一致状況、後5個は未来の予測値)
に限定している点です。
要するに古いデータは表示しない点にあります。
25個の予測データ表示位置
xl_df = pd.read_csv("public_html/manep-w/mane_chart_go_long.csv", encoding="cp932")
Idx = xl_df.index
とすると25個の予測データ表示位置 Idx_25 は
Idx_25 = Idx[-25:] - Idx[-1] + 98 + 5
となります。
なぜ?
大容量データが1000個(0~999)あったとします。
Idx[-25:] = 975 ~ 999
Idx[-1] = 999
小計 = -24 ~ 0
+ 98 + 5 = 79 ~ 103
となり、後5個未来の予測値は
99,100,101,102,103
の位置に、そして、前20個の現データとの一致状況は
79,80,81,・・・・・・・96,97,98
の位置にそれぞれ表示されます。
99本のロ-ソク足表示
使用したデータには非常に多くのロ-ソク足が存在しますが、実際に表示するのは99本のみに限定します。
dsc-5.py では使用したデータ数が少なかったのですべてを表示していました。
表示するロ-ソク足のデータをラストの99本に限定します。
Idx_99 = Idx[-99:] - Idx[-99]
Date_99 = Date[-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)
となります。
結果の保存
出来上がったロ-ソク足予測チャートを保存します。
plt.savefig(
'/home/yasuhiro/public_html/manep-img/mane_chart_dsc.png')
次に予測値 w_5 と信頼度 cor_max を CSV データとして保存します。
- 予測値 w_5 列の作成
w_5 = np.round(w[-5:], 3)
# 3桁まで表示
cor_max100 = np.round(cor_max * 100, 3)
# 相関係数を%に変更、小数点以下を3桁まで表示
w_5 と cor_max100 を合体
w_5 = np.append(w_5, cor_max100)
w_5 を pandas データフレーム型に変換
w_5 = pd.DataFrame(w_5) - 予測日 lastday_pd 列の作成
予測日は lastday[0] にありますので、これに'信頼度(%)'の文字を付け加え
pandas データフレーム型に変換します。
lastday_me = np.append(lastday[0], '信頼度(%)')
lastday_pd = pd.DataFrame(lastday_me)
これで、pandas で操作することが可能になります。 - 予測日 lastday_pd と予測値 w_5 合体
lastday_pd 列と w_5 列を合体します。
df_concat = pd.concat([lastday_pd, w_5], axis = 1)
2つの配列を pandas concat 関数を使用して横(列)方向(axis = 1)へ連結します。
これを CSV ファイルとして保存します。df_concat.to_csv( '/home/yasuhiro/public_html/manep-img/mane_chart_dsc.csv', header=False, index=False)
ここまでで、dsc-5.py からの変更のポイントを説明しました。
引き続き、これらをまとめ変更ファイル dsc-6.py を表示します。