このプログラムの目的
このプログラムはdqn.pyなどの学習によって得られたエージェントの収益グラフ,もしくはその学習過程をグラフとして出力するものです.
work_share
├06_sampling_dqn_learning
├Dockerfile
├docker-compose.yml
└src
├draw_graph
| └draw_tools.py (これを作成)
├enviroment
| └stock_env.py
├reinforcement_learning
| └dqn.py
└experiment01.py
保存したデータのグラフ化
分けて話すようなことでもないので,一括で載せます.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter
def plot_log(log, save_path, key):
x = log['i']
y = log[key]
y_finite = y.values[[np.isfinite(y)]]
if len(y_finite) != 0:
plot_max = np.percentile(y_finite, 95) * 2
plot_min = np.percentile(y_finite, 5) * 0.5
plt.cla()
plt.clf()
plt.plot(x, y)
if len(y_finite) != 0:
plt.ylim([plot_min, plot_max])
plt.title(key)
plt.savefig(save_path, bbox_inches='tight')
def plot_win_rate_df(win_rate_df, save_path, title):
is_train_data = win_rate_df['is_train_data']
win_rate_df = win_rate_df.drop('is_train_data', axis=1)
sum_win_rate = win_rate_df.sum(axis=1)
x = sum_win_rate.index.values
y = sum_win_rate.values
train_num = np.sum(is_train_data)
split_date = x[train_num]
plt.cla()
plt.clf()
plt.plot(x, y)
plt.vlines(split_date, np.min(y), np.max(y), label='train test split', linestyles='dashed', colors='gray')
plt.legend()
plt.title(title)
plt.savefig(save_path, bbox_inches='tight')