Win11 WSL2 Ubuntu Python RNN
WSL2 Python RNN Keras 予測最終日取得
ここまでで予測値プロット表示のための X 軸日付処理が完了しました。
引き続き、予測最終日を取得して行きます。
予測最終日を取得するには
日付 from_date から 日数 add_days 後の日付 current_date を求める関数
addBusinessDays(from_date, add_days)
を利用すると求めることができます。
addBusinessDays 関数の作成方法については
Python で 豪ドル/円チャ-ト を探求-予測最終日取得
に説明がありますので参考にしてください。
予測最終日取得関数は以下のようになります。
import datetime 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
予測最終日取得関数使用
具体的に予測最終日取得関数を使用します。
mane_chart_go_long.csv デ-タの中の日付のラスト
Date[-1]
から5平日後の予測最終日を求めます。
関数 addBusinessDays(from_date, add_days)
に渡す引数は datetime 型である必要があります。
Date[-1] は文字型ですので、これを datetime 型に変換します。
文字列を datetime に変換するのが strptime() 関数です。
書式は
datetime.datetime.strptime(文字列, 書式指定文字列)
です。
ライブラリを取り込む時に、
import datetime
from datetime import datetime as dt
と書くと
dt.strptime(文字列, 書式指定文字列)
と省略して書くことができます。
Date[-1] は
2020/04/15 10:00:00
のように年月日と時分秒が記述されていますので
tstr = Date[-1]
tdatetime = dt.strptime(tstr, '%Y/%m/%d %H:%M:%S')
とすると日付のラストは datetime 型の日付に変換されます。
後は、予測最終日取得関数を呼び出すだけで予測最終日 lastday を求めることができます。
lastday = addBusinessDays(tdatetime, 5)
答えは
lastday[1] に予測最終日までの5日間が 月/日 の文字列型で入っています。
予測最終日は lastday[1][4] に入っています。
ちなみに lastday[0] には予測最終日までの5日間が 年/月/日 の文字列型で入っています。
xData の X 軸の目盛り日付と
xD の日付表示位置に lastday を付け加えます。
xDate.append(lastday[1][4])
xD.append(i + 5)
WSL2 Python RNN Keras ロ-ソク足本体表示
ロ-ソク足表示を進めます。
そのスクリプトの説明は
Python Colaboratory--ロ-ソク足本体の表示
にあります。
また、ファイルとしてまとまったものが
Python Colaboratory--ロ-ソク足表示ファイルまとめ①
にありますのでこれらを流用します。
①との差分は赤字で表示しています。
import matplotlib.pyplot as plt from mplfinance.original_flavor import candlestick_ohlc xl_df = pd.read_csv( "/home/yamada/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 Idx = xl_df.index raw_data0 = Close.copy() raw_data = Close.copy() Close1 = Close.copy() Date_100 = Date[-100:] xDate = [] xD = [] for i, key in enumerate(Date_100): if(i % 10 == 0): e4 = str(key)[4:10] e6 = e4.replace("/0", "/") e8 = e6.lstrip("/") xDate.append(e8) xD.append(i) Idx_100 = Idx[-100:] - Idx[-100] Close_100 = Close1[-100:] Open_100 = Open[-100:] High_100 = High[-100:] Low_100 = Low[-100:] ohlc = zip( Idx_100, Open_100, High_100, Low_100, Close_100) 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.savefig( '/home/yamada/public_html/manep-img/mane_chart_go_keras.png') )
WSL2 Python RNN Keras 予測値の保存
予測値結果を保存します。
2つの配列(予測日と予測値)を pandas concat 関数を使用して横(列)方向へ連結することにします。
まずは、それぞれの配列を DataFrame 型に変換します。
これで、pandas で操作することが可能になりました。
import pandas as pd
print("予測値=最終日+1~+5日")
valhe = np.round(f_result, 3)#3桁まで表示
valhe_pd = pd.DataFrame(valhe)
lastday_pd = pd.DataFrame(lastday[0])
この2つを pandas concat 関数で横(列)方向へ連結します。
横(列)方向指定 axis = 1 を忘れないでください。
df_concat = pd.concat([lastday_pd, valhe_pd], axis = 1)
これを csv ファイルとして保存します。
保存するファイルフォルダ名は絶対パスで指定します。
そして、header=False, index=False
としてヘッダとインデックスは保存なしとします。
df_concat = pd.concat([lastday_pd, valhe_pd], axis = 1)
print(df_concat)
df_concat.to_csv(
'/home/yamada/public_html/manep-img/mane_chart_go_keras_long.csv',
header=False, index=False)
ここまで、WSL2 Python RNN 予測ファイルについて小出しにその詳細を説明してきました。
引き続き、これを一つのファイルにまとめます。