[Visualization] keras 결과물(history) 시각화하는 함수
2020. 11. 21. 20:30ㆍ분석 Python/Visualization
keras를 사용하면 쉽게 결과물들을 저장을 할 수 있다.
이런 식으로 metrics에 제공하는 함수나, 함수를 만들면 fitting 할 때 저 부분들에 대해서 epoch 마다 저장을 해준다.
model.compile(loss = keras.losses.BinaryCrossentropy(label_smoothing = 0.0),
optimizer = adam, metrics =['accuracy',get_f1])
실제로 fit을 하게 됬을 때, validation_data를 넣으면 `val_accuracy` 와 `val_get_f1` 형태로 저장이 된다.
history = model.fit(train,
train_y,
validation_data=(valid, valid_y),
)
다음과 같이 dict 형태로 저장이 된다.
history.history.keys()
## dict_keys(['loss', 'accuracy', 'get_f1', 'val_loss', 'val_accuracy', 'val_get_f1'])
형태를 보면, 규칙이 있는 것을 알 수 있다.
train 결과는 loss , accuracy , get_f1 / valid 결과는 val_loss , val_accuracy , val_get_f1
그래서 다음 결과를 얻게되면 시각화하는 함수를 공유한다.
def vis(history,name) :
plt.title(f"{name.upper()}")
plt.xlabel('epochs')
plt.ylabel(f"{name.lower()}")
value = history.history.get(name)
val_value = history.history.get(f"val_{name}",None)
epochs = range(1, len(value)+1)
plt.plot(epochs, value, 'b-', label=f'training {name}')
if val_value is not None :
plt.plot(epochs, val_value, 'r:', label=f'validation {name}')
plt.legend(loc='upper center', bbox_to_anchor=(0.05, 1.2) , fontsize=10 , ncol=1)
def plot_history(history) :
key_value = list(set([i.split("val_")[-1] for i in list(history.history.keys())]))
plt.figure(figsize=(12, 4))
for idx , key in enumerate(key_value) :
plt.subplot(1, len(key_value), idx+1)
vis(history, key)
plt.tight_layout()
plt.show()
사용법은 아주 간단하다
이걸 시행하면, validation 이 있는 경우에는 같이 보여주고, 없는 경우에는 training만 보여준다.
plot_history(history)
굳
728x90
'분석 Python > Visualization' 카테고리의 다른 글
python) treemap 알아보기 (0) | 2021.04.29 |
---|---|
[Visualization] Learning Curve를 이용하여 시각화하기(Train/Valid) (0) | 2020.12.18 |
[Visualization] x 축에 있는 margin 제거하기 (2/2) (0) | 2020.11.19 |
[Visualization] x 축에 중복된 이름 잘 시각화하기 (xticks) (1/2) (1) | 2020.11.19 |
[TIP / Vis ][plotly] 변수 중요도 시각화 하기 (bar_polar , bar plot) (0) | 2020.10.10 |