# plotly standard imports
import plotly.graph_objs as go
import chart_studio.plotly as py
# Cufflinks wrapper on plotly
import cufflinks
# Data science imports
import pandas as pd
import numpy as np
# Options for pandas
pd.options.display.max_columns = 30
# Display all cell outputs
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'
from plotly.offline import iplot, init_notebook_mode
cufflinks.go_offline(connected=True)
init_notebook_mode(connected=True)
# Set global theme
cufflinks.set_config_file(world_readable=True, theme='pearl')
import tensorflow as tf
from src.BaselineModel import Baseline
from src.prepare_datasets import get_prepared_datasets, make_window_generator
train_df, test_df = get_prepared_datasets()
column_indices = {name: i for i, name in enumerate(train_df.columns)}
baseline = Baseline(label_index=column_indices['close'])
baseline.compile(
loss=tf.losses.MeanSquaredError(),
metrics=[tf.metrics.MeanAbsoluteError(), tf.metrics.MeanSquaredLogarithmicError()]
)
train, test = make_window_generator()
baseline_test_metrics = baseline.evaluate(test, verbose=1)
baseline_test_metrics = pd.DataFrame(data=[baseline_test_metrics], columns=baseline.metrics_names)
baseline_test_metrics
1773/1773 [==============================] - 18s 10ms/step - loss: 2.0617e-08 - mean_absolute_error: 5.4053e-05 - mean_squared_logarithmic_error: 1.3112e-08
loss | mean_absolute_error | mean_squared_logarithmic_error | |
---|---|---|---|
0 | 1.181721e-07 | 0.000148 | 6.196336e-08 |
#baseline_train_metrics = baseline.evaluate(window.train, verbose=1)
#baseline_train_metrics = pd.DataFrame(data=[baseline_train_metrics], columns=baseline.metrics_names)
#baseline_train_metrics
df = pd.read_csv('./metrics/training.csv')
df['baseline_test_loss'] = baseline_test_metrics['loss'][0]
df['baseline_test_mean_absolute_error'] = baseline_test_metrics['mean_absolute_error'][0]
df['baseline_test_mean_squared_logarithmic_error'] = baseline_test_metrics['mean_squared_logarithmic_error'][0]
#df['baseline_train_loss'] = baseline_train_metrics['loss'][0]
#df['baseline_train_mean_absolute_error'] = baseline_train_metrics['mean_absolute_error'][0]
#df['baseline_train_mean_squared_logarithmic_error'] = baseline_train_metrics['mean_squared_logarithmic_error'][0]
df
epoch | loss | mean_absolute_error | mean_squared_logarithmic_error | percentage_difference | val_loss | val_mean_absolute_error | val_mean_squared_logarithmic_error | val_percentage_difference | baseline_test_loss | baseline_test_mean_absolute_error | baseline_test_mean_squared_logarithmic_error | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0.000085 | 0.003506 | 0.000050 | inf | 0.000251 | 0.006621 | 0.000117 | 1.789079 | 1.181721e-07 | 0.000148 | 6.196336e-08 |
1 | 1 | 0.000004 | 0.001414 | 0.000003 | inf | 0.000222 | 0.006427 | 0.000104 | 1.803439 | 1.181721e-07 | 0.000148 | 6.196336e-08 |
2 | 2 | 0.000003 | 0.001200 | 0.000002 | inf | 0.000278 | 0.006411 | 0.000128 | 1.709288 | 1.181721e-07 | 0.000148 | 6.196336e-08 |
3 | 3 | 0.000003 | 0.001166 | 0.000002 | inf | 0.000437 | 0.008015 | 0.000205 | 1.883486 | 1.181721e-07 | 0.000148 | 6.196336e-08 |
4 | 4 | 0.000003 | 0.001155 | 0.000002 | inf | 0.000321 | 0.007077 | 0.000148 | 2.144611 | 1.181721e-07 | 0.000148 | 6.196336e-08 |
5 | 5 | 0.000003 | 0.001142 | 0.000002 | inf | 0.000500 | 0.008807 | 0.000235 | 2.095752 | 1.181721e-07 | 0.000148 | 6.196336e-08 |
6 | 6 | 0.000003 | 0.001134 | 0.000002 | inf | 0.000456 | 0.008605 | 0.000214 | 2.194371 | 1.181721e-07 | 0.000148 | 6.196336e-08 |
df[['epoch', 'loss', 'val_loss']].iplot(
x='epoch',
mode='lines+markers',
xTitle='epoch',
yTitle='loss',
title='Training vs Validation loss',
linecolor='black',
)
df[['epoch', 'loss']].iplot(
x='epoch',
mode='lines+markers',
xTitle='epoch',
yTitle='loss',
title='Training loss',
linecolor='black',
)
df[['epoch', 'mean_absolute_error', 'val_mean_absolute_error']].iplot(
x='epoch',
mode='lines+markers',
xTitle='epoch',
yTitle='mean_absolute_error',
title='mean_absolute_error'
)
df[['epoch', 'mean_squared_logarithmic_error', 'val_mean_squared_logarithmic_error']].iplot(
x='epoch',
mode='lines+markers',
xTitle='epoch',
yTitle='mean_absolute_error',
title='mean_absolute_error'
)
# df[['epoch', 'loss', 'baseline_train_loss']].iplot(
# x='epoch',
# mode='lines+markers',
# xTitle='epoch',
# yTitle='loss',
# title='Training loss with baseline',
# linecolor='black',
# )
df[['epoch', 'val_loss', 'baseline_test_loss']].iplot(
x='epoch',
mode='lines+markers',
xTitle='epoch',
yTitle='loss',
title='Training validation loss with baseline',
linecolor='black',
)