-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvisualizer.py
133 lines (84 loc) · 4.03 KB
/
visualizer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import matplotlib.pyplot as plt
import data_management
import datetime
import numpy as np
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
def plot_data(columns, resample_type, intervall=60):
intervall = datetime.timedelta(minutes=intervall)
data_management.loadData()
if resample_type == 'kwh':
data_management.DATASET = data_management.DATASET[['delta_kwh']].resample(intervall, label='right', closed='right').sum()
data_management.DATASET[['delta_kwh']].plot()
plt.ylabel('kwh charged in ' + str(intervall))
if resample_type == 'count':
data_management.DATASET = data_management.DATASET[['time_p']].resample(intervall).count()
data_management.DATASET[['time_p']].plot(legend=None)
plt.ylabel('Number of events in ' + str(intervall))
if resample_type == 'minutes_charged':
data_management.DATASET = data_management.DATASET[['minutes_charged']].resample(intervall).sum()
data_management.DATASET[['minutes_charged']].plot(legend=None)
plt.ylabel('Minutes charged per ' + str(intervall))
if columns != None:
data_management.DATASET[columns].plot()
plt.show()
def plot_train_history(history, title):
loss = history.history['loss']
val_loss = history.history['val_loss']
epochs = range(len(loss))
plt.figure()
plt.plot(epochs, loss, 'b', label='Training loss')
plt.plot(epochs, val_loss, 'r', label='Validation loss')
plt.title(title)
plt.ylabel('mse')
plt.xlabel('epochs')
plt.legend()
plt.show()
def plot_prediction_minutes_charged(data, label, prediction, intervall=60, target=1):
intervall = datetime.timedelta(minutes=intervall)
data = data[['minutes_charged']].resample(intervall, label='right', closed='right').sum()
plot_prediction(data, label, prediction, norm='minutes_charged', y_label='Minutes charged per '+ str(intervall), intervall=intervall, target=target)
def plot_prediction_kwh(data, label, prediction, intervall=60, target=1):
intervall = datetime.timedelta(minutes=intervall)
data = data[['delta_kwh']].resample(intervall, label='right', closed='right').sum()
plot_prediction(data, label, prediction, norm='delta_kwh', y_label='kwh charged per '+ str(intervall) , intervall=intervall, target=target)
def plot_prediction_count(data, label, prediction, intervall=60, target=1):
intervall = datetime.timedelta(minutes=intervall)
data = data[['time_p']].resample(intervall, label='right', closed='right').count()
plot_prediction(data, label, prediction, norm='count', y_label='Number of charges per '+ str(intervall), intervall=intervall, target=target)
def plot_prediction(data, label, prediction, norm, y_label, intervall, target):
eff_error = np.absolute(np.subtract(label, prediction))
fig=plt.figure()
ax=fig.add_subplot(111)
ax.plot(data[1:])
target_times = [data.index[-1] + intervall * x for x in range(1, target+1)]
ax.plot(target_times, data_management.denormalizeNumber(label, data_management.NORM_RANGE[norm]), 'rx-', markersize=10,
label='True Future')
ax.plot(target_times, data_management.denormalizeNumber(prediction, data_management.NORM_RANGE[norm]), 'go-', markersize=10,
label='Model Prediction')
ax.plot(target_times, data_management.denormalizeNumber(eff_error, data_management.NORM_RANGE[norm]), '--c^', markersize=5,
label='Effective Error')
plt.title('Prediction example '+y_label)
plt.ylim(bottom=0)
plt.legend()
plt.xlabel('Time')
plt.ylabel(y_label)
plt.show()
def plot_error(data, spec, ev_mode):
fig=plt.figure()
ax=fig.add_subplot(111)
for i in range(len(data)):
ax.plot(data[i], label=spec[i])
plt.legend()
plt.ylim(bottom=0)
plt.title('RSME per ' + ev_mode)
plt.xlabel(ev_mode)
plt.ylabel('%')
plt.show()
def plot_target_error(data, spec):
plot_error(data, spec, 'target length')
def plot_hour_error(data, spec):
plot_error(data, spec, 'hour of day')
if __name__ == "__main__":
print('Visualizer started...')
plot_data(None, 'kwh')