revert 在原始代码的基础上,增加(load、water、carbon数据集、处理),增加flask接口,将test运行的数据,传入到run.py,返回给test。py窗口
This commit is contained in:
赵敬皓 2025-02-12 16:40:13 +08:00
parent 3a339c5270
commit 652c5ff1e1
30 changed files with 0 additions and 69791 deletions

View File

@ -1,24 +0,0 @@
import joblib
import numpy as np
def load_carbon_model(path):
gbm = joblib.load(path)
return gbm
def carbon_forecast(inputs: np.ndarray, model):
"""_summary_
Args:
inputs (np.ndarray): 输入序列
model (_type_): _description_
"""
out = model.predict([inputs])
return out
if __name__ == '__main__':
model = load_carbon_model('./models/carbon_pred.joblib')
inputs = np.random.randn(24)
print(inputs.shape)
out = carbon_forecast(inputs, model)
print(out)

View File

@ -1,67 +0,0 @@
import pandas as pd
import numpy as np
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import joblib
from logzero import logger
def time_series_to_supervised(data, columns, n_in=24, n_out=1,dropnan=True):
"""
:param data:作为列表或2D NumPy数组的观察序列需要
:param n_in:作为输入的滞后观察数X值可以在[1..len数据]之间可选默认为1
:param n_out:作为输出的观测数量y值可以在[0..len数据]之间可选的默认为1
:param dropnan:Boolean是否删除具有NaN值的行可选的默认为True
:return:
"""
logger.info(f"正在处理训练数据size{data.shape}")
n_vars = 1 if type(data) is list else data.shape[1]
df = pd.DataFrame(data)
origNames = columns
cols, names = list(), list()
cols.append(df.shift(0))
names += [('%s' % origNames[j]) for j in range(n_vars)]
n_in = max(1, n_in)
for i in range(n_in-1, 0, -1):
time = '(t-%d)' % i
cols.append(df.shift(i))
names += [('%s%s' % (origNames[j], time)) for j in range(n_vars)]
n_out = max(n_out, 0)
for i in range(1, n_out+1):
time = '(t+%d)' % i
cols.append(df.shift(-i))
names += [('%s%s' % (origNames[j], time)) for j in range(n_vars)]
agg = pd.concat(cols, axis=1)
agg.columns = names
if dropnan:
agg.dropna(inplace=True)
return agg
def train_model(train_data: pd.DataFrame):
"""训练模型的函数,需要根据模型类型实际调整
Args:
data (pd.DataFrame): 训练集
"""
# 特征和输出列名,需要根据业务场景灵活处理
fea_cols = train_data.columns[:-1].tolist()
out_cols = train_data.columns[-1:].tolist()
logger.info(f"特征列: {fea_cols}, 输出列: {out_cols}")
X = train_data[fea_cols]
y = train_data[out_cols]
train_X,test_X,train_y,test_y = train_test_split(X, y, test_size=0.2, random_state=42)
valid_X,test_X,valid_y,test_y = train_test_split(test_X, test_y, test_size=0.5, random_state=42)
# 参数
other_params = {'learning_rate': 0.1, 'n_estimators': 150, 'max_depth': 10, 'min_child_weight': 1, 'seed': 0, 'subsample': 0.8, 'colsample_bytree': 0.8, 'gamma': 0, 'reg_alpha': 0, 'reg_lambda': 1}
print(train_X.shape, train_y.shape)
gbm = xgb.XGBRegressor(objective='reg:squarederror', early_stopping_rounds=20,**other_params)
gbm.fit(train_X.values, train_y.values, eval_set=[(valid_X.values, valid_y.values)])
y_pred = gbm.predict(test_X.values)
logger.info(f"Root Mean Squared Error on Test set: {np.sqrt(mean_squared_error(test_y, y_pred))}")
logger.info(f"R2 score on Test set: {r2_score(test_y, y_pred)}")
joblib.dump(gbm, './models/carbon_pred.joblib')
logger.info(f"save_path: ./models/carbon_pred.joblib")
if __name__ == '__main__':
data = pd.read_csv('./data/carbon_data_hourly.csv', index_col=0)
agg = time_series_to_supervised(data.values, data.columns, 24, 1)
train_model(agg)

View File

@ -1,567 +0,0 @@
date,Value
2022-01-01 00:00:00,72.076
2022-01-01 01:00:00,64.442
2022-01-01 02:00:00,64.084
2022-01-01 03:00:00,60.842
2022-01-01 04:00:00,61.798
2022-01-01 05:00:00,66.538
2022-01-01 06:00:00,72.626
2022-01-01 07:00:00,75.181
2022-01-01 08:00:00,68.397
2022-01-01 09:00:00,67.668
2022-01-01 10:00:00,67.021
2022-01-01 11:00:00,71.118
2022-01-01 12:00:00,811.791
2022-01-01 13:00:00,70.55
2022-01-01 14:00:00,62.929
2022-01-01 15:00:00,64.519
2022-01-01 16:00:00,60.544
2022-01-01 17:00:00,64.687
2022-01-01 18:00:00,64.736
2022-01-01 19:00:00,73.698
2022-01-01 20:00:00,72.559
2022-01-01 21:00:00,63.221
2022-01-01 22:00:00,65.418
2022-01-01 23:00:00,65.593
2022-01-02 00:00:00,71.677
2022-01-02 01:00:00,800.131
2022-01-02 02:00:00,72.708
2022-01-02 03:00:00,65.117
2022-01-02 04:00:00,66.532
2022-01-02 05:00:00,61.975
2022-01-02 06:00:00,62.031
2022-01-02 07:00:00,67.875
2022-01-02 08:00:00,74.184
2022-01-02 09:00:00,77.029
2022-01-02 10:00:00,66.156
2022-01-02 11:00:00,66.651
2022-01-02 12:00:00,67.625
2022-01-02 13:00:00,75.857
2022-01-02 14:00:00,823.74
2022-01-02 15:00:00,81.264
2022-01-02 16:00:00,71.058
2022-01-02 17:00:00,73.361
2022-01-02 18:00:00,68.703
2022-01-02 19:00:00,68.985
2022-01-02 20:00:00,73.936
2022-01-02 21:00:00,80.968
2022-01-02 22:00:00,81.962
2022-01-02 23:00:00,72.95
2022-01-03 00:00:00,74.746
2022-01-03 01:00:00,78.924
2022-01-03 02:00:00,84.49
2022-01-03 03:00:00,911.346
2022-01-03 04:00:00,87.215
2022-01-03 05:00:00,75.943
2022-01-03 06:00:00,75.092
2022-01-03 07:00:00,68.641
2022-01-03 08:00:00,74.916
2022-01-03 09:00:00,80.942
2022-01-03 10:00:00,90.667
2022-01-03 11:00:00,89.046
2022-01-03 12:00:00,80.975
2022-01-03 13:00:00,77.369
2022-01-03 14:00:00,78.058
2022-01-03 15:00:00,83.279
2022-01-03 16:00:00,962.143
2022-01-03 17:00:00,85.191
2022-01-03 18:00:00,71.476
2022-01-03 19:00:00,67.829
2022-01-03 20:00:00,69.051
2022-01-03 21:00:00,74.201
2022-01-03 22:00:00,81.372
2022-01-03 23:00:00,88.003
2022-01-04 00:00:00,91.836
2022-01-04 01:00:00,85.066
2022-01-04 02:00:00,79.494
2022-01-04 03:00:00,79.291
2022-01-04 04:00:00,87.107
2022-01-04 05:00:00,959.916
2022-01-04 06:00:00,93.946
2022-01-04 07:00:00,83.91
2022-01-04 08:00:00,83.689
2022-01-04 09:00:00,78.077
2022-01-04 10:00:00,83.19
2022-01-04 11:00:00,88.15
2022-01-04 12:00:00,96.579
2022-01-04 13:00:00,97.246
2022-01-04 14:00:00,84.463
2022-01-04 15:00:00,86.071
2022-01-04 16:00:00,86.09
2022-01-04 17:00:00,94.293
2022-01-04 18:00:00,1055.704
2022-01-04 19:00:00,100.568
2022-01-04 20:00:00,94.862
2022-01-04 21:00:00,93.21
2022-01-04 22:00:00,81.245
2022-01-04 23:00:00,82.785
2022-01-05 00:00:00,91.484
2022-01-05 01:00:00,107.126
2022-01-05 02:00:00,106.245
2022-01-05 03:00:00,95.662
2022-01-05 04:00:00,90.03
2022-01-05 05:00:00,91.239
2022-01-05 06:00:00,102.138
2022-01-05 07:00:00,1136.594
2022-01-05 08:00:00,108.164
2022-01-05 09:00:00,94.766
2022-01-05 10:00:00,95.724
2022-01-05 11:00:00,86.386
2022-01-05 12:00:00,89.002
2022-01-05 13:00:00,99.05
2022-01-05 14:00:00,111.044
2022-01-05 15:00:00,107.758
2022-01-05 16:00:00,95.891
2022-01-05 17:00:00,94.541
2022-01-05 18:00:00,92.986
2022-01-05 19:00:00,105.056
2022-01-05 20:00:00,1180.367
2022-01-05 21:00:00,113.136
2022-01-05 22:00:00,97.313
2022-01-05 23:00:00,95.335
2022-01-06 00:00:00,86.587
2022-01-06 01:00:00,90.83
2022-01-06 02:00:00,94.419
2022-01-06 03:00:00,109.995
2022-01-06 04:00:00,109.179
2022-01-06 05:00:00,96.39
2022-01-06 06:00:00,92.24
2022-01-06 07:00:00,95.165
2022-01-06 08:00:00,101.367
2022-01-06 09:00:00,1181.956
2022-01-06 10:00:00,105.965
2022-01-06 11:00:00,90.912
2022-01-06 12:00:00,93.568
2022-01-06 13:00:00,86.575
2022-01-06 14:00:00,90.75
2022-01-06 15:00:00,99.98
2022-01-06 16:00:00,119.945
2022-01-06 17:00:00,126.652
2022-01-06 18:00:00,107.675
2022-01-06 19:00:00,100.677
2022-01-06 20:00:00,101.663
2022-01-06 21:00:00,117.417
2022-01-06 22:00:00,1241.778
2022-01-06 23:00:00,119.436
2022-01-07 00:00:00,103.635
2022-01-07 01:00:00,108.149
2022-01-07 02:00:00,94.329
2022-01-07 03:00:00,98.181
2022-01-07 04:00:00,112.983
2022-01-07 05:00:00,119.701
2022-01-07 06:00:00,125.724
2022-01-07 07:00:00,107.179
2022-01-07 08:00:00,108.583
2022-01-07 09:00:00,107.546
2022-01-07 10:00:00,112.167
2022-01-07 11:00:00,1317.614
2022-01-07 12:00:00,125.429
2022-01-07 13:00:00,109.359
2022-01-07 14:00:00,107.966
2022-01-07 15:00:00,100.317
2022-01-07 16:00:00,107.595
2022-01-07 17:00:00,113.584
2022-01-07 18:00:00,126.626
2022-01-07 19:00:00,124.309
2022-01-07 20:00:00,111.9
2022-01-07 21:00:00,108.331
2022-01-07 22:00:00,107.034
2022-01-07 23:00:00,124.95
2022-01-08 00:00:00,1367.401
2022-01-08 01:00:00,126.887
2022-01-08 02:00:00,109.086
2022-01-08 03:00:00,106.803
2022-01-08 04:00:00,95.341
2022-01-08 05:00:00,101.892
2022-01-08 06:00:00,116.698
2022-01-08 07:00:00,134.789
2022-01-08 08:00:00,122.28
2022-01-08 09:00:00,112.03
2022-01-08 10:00:00,107.235
2022-01-08 11:00:00,107.317
2022-01-08 12:00:00,117.127
2022-01-08 13:00:00,1357.485
2022-01-08 14:00:00,124.043
2022-01-08 15:00:00,106.754
2022-01-08 16:00:00,108.607
2022-01-08 17:00:00,102.222
2022-01-08 18:00:00,112.257
2022-01-08 19:00:00,126.2
2022-01-08 20:00:00,140.582
2022-01-08 21:00:00,139.268
2022-01-08 22:00:00,117.773
2022-01-08 23:00:00,113.515
2022-01-09 00:00:00,111.217
2022-01-09 01:00:00,124.314
2022-01-09 02:00:00,1426.753
2022-01-09 03:00:00,133.468
2022-01-09 04:00:00,120.783
2022-01-09 05:00:00,115.584
2022-01-09 06:00:00,106.49
2022-01-09 07:00:00,111.2
2022-01-09 08:00:00,128.537
2022-01-09 09:00:00,141.139
2022-01-09 10:00:00,148.031
2022-01-09 11:00:00,121.057
2022-01-09 12:00:00,117.165
2022-01-09 13:00:00,116.659
2022-01-09 14:00:00,131.695
2022-01-09 15:00:00,1491.807
2022-01-09 16:00:00,132.233
2022-01-09 17:00:00,124.345
2022-01-09 18:00:00,122.803
2022-01-09 19:00:00,111.194
2022-01-09 20:00:00,115.915
2022-01-09 21:00:00,126.031
2022-01-09 22:00:00,138.083
2022-01-09 23:00:00,139.614
2022-01-10 00:00:00,124.594
2022-01-10 01:00:00,119.943
2022-01-10 02:00:00,120.824
2022-01-10 03:00:00,143.264
2022-01-10 04:00:00,1518.844
2022-01-10 05:00:00,132.923
2022-01-10 06:00:00,116.26
2022-01-10 07:00:00,121.806
2022-01-10 08:00:00,115.909
2022-01-10 09:00:00,118.556
2022-01-10 10:00:00,130.719
2022-01-10 11:00:00,143.146
2022-01-10 12:00:00,146.257
2022-01-10 13:00:00,134.042
2022-01-10 14:00:00,128.8
2022-01-10 15:00:00,122.119
2022-01-10 16:00:00,137.027
2022-01-10 17:00:00,1547.564
2022-01-10 18:00:00,143.148
2022-01-10 19:00:00,117.505
2022-01-10 20:00:00,118.823
2022-01-10 21:00:00,111.147
2022-01-10 22:00:00,122.745
2022-01-10 23:00:00,131.945
2022-01-11 00:00:00,144.042
2022-01-11 01:00:00,144.107
2022-01-11 02:00:00,129.099
2022-01-11 03:00:00,124.058
2022-01-11 04:00:00,127.928
2022-01-11 05:00:00,133.633
2022-01-11 06:00:00,1548.18
2022-01-11 07:00:00,137.39
2022-01-11 08:00:00,121.125
2022-01-11 09:00:00,126.201
2022-01-11 10:00:00,118.33
2022-01-11 11:00:00,121.946
2022-01-11 12:00:00,129.054
2022-01-11 13:00:00,148.563
2022-01-11 14:00:00,142.166
2022-01-11 15:00:00,132.766
2022-01-11 16:00:00,126.405
2022-01-11 17:00:00,126.014
2022-01-11 18:00:00,139.605
2022-01-11 19:00:00,1569.566
2022-01-11 20:00:00,139.269
2022-01-11 21:00:00,128.056
2022-01-11 22:00:00,134.599
2022-01-11 23:00:00,119.596
2022-01-12 00:00:00,120.469
2022-01-12 01:00:00,136.697
2022-01-12 02:00:00,157.967
2022-01-12 03:00:00,156.392
2022-01-12 04:00:00,133.435
2022-01-12 05:00:00,130.321
2022-01-12 06:00:00,131.799
2022-01-12 07:00:00,143.919
2022-01-12 08:00:00,1632.52
2022-01-12 09:00:00,153.119
2022-01-12 10:00:00,131.25
2022-01-12 11:00:00,132.54
2022-01-12 12:00:00,120.392
2022-01-12 13:00:00,126.496
2022-01-12 14:00:00,146.639
2022-01-12 15:00:00,153.375
2022-01-12 16:00:00,151.757
2022-01-12 17:00:00,133.235
2022-01-12 18:00:00,129.229
2022-01-12 19:00:00,124.074
2022-01-12 20:00:00,136.675
2022-01-12 21:00:00,1638.781
2022-01-12 22:00:00,143.097
2022-01-12 23:00:00,127.774
2022-01-13 00:00:00,127.348
2022-01-13 01:00:00,118.414
2022-01-13 02:00:00,125.516
2022-01-13 03:00:00,138.913
2022-01-13 04:00:00,159.638
2022-01-13 05:00:00,167.717
2022-01-13 06:00:00,137.474
2022-01-13 07:00:00,132.871
2022-01-13 08:00:00,134.591
2022-01-13 09:00:00,147.39
2022-01-13 10:00:00,1660.744
2022-01-13 11:00:00,153.915
2022-01-13 12:00:00,138.446
2022-01-13 13:00:00,138.362
2022-01-13 14:00:00,124.885
2022-01-13 15:00:00,135.014
2022-01-13 16:00:00,147.23
2022-01-13 17:00:00,160.939
2022-01-13 18:00:00,162.998
2022-01-13 19:00:00,144.095
2022-01-13 20:00:00,143.399
2022-01-13 21:00:00,147.318
2022-01-13 22:00:00,155.809
2022-01-13 23:00:00,1752.41
2022-01-14 00:00:00,162.245
2022-01-14 01:00:00,135.873
2022-01-14 02:00:00,138.495
2022-01-14 03:00:00,130.325
2022-01-14 04:00:00,136.525
2022-01-14 05:00:00,147.624
2022-01-14 06:00:00,169.108
2022-01-14 07:00:00,164.925
2022-01-14 08:00:00,152.353
2022-01-14 09:00:00,152.153
2022-01-14 10:00:00,146.425
2022-01-14 11:00:00,160.993
2022-01-14 12:00:00,1797.045
2022-01-14 13:00:00,159.602
2022-01-14 14:00:00,138.682
2022-01-14 15:00:00,144.143
2022-01-14 16:00:00,133.418
2022-01-14 17:00:00,146.249
2022-01-14 18:00:00,158.591
2022-01-14 19:00:00,174.995
2022-01-14 20:00:00,174.745
2022-01-14 21:00:00,156.709
2022-01-14 22:00:00,147.334
2022-01-14 23:00:00,139.397
2022-01-15 00:00:00,154.318
2022-01-15 01:00:00,1828.184
2022-01-15 02:00:00,161.387
2022-01-15 03:00:00,138.081
2022-01-15 04:00:00,145.169
2022-01-15 05:00:00,137.504
2022-01-15 06:00:00,144.891
2022-01-15 07:00:00,157.377
2022-01-15 08:00:00,179.42
2022-01-15 09:00:00,173.707
2022-01-15 10:00:00,154.874
2022-01-15 11:00:00,147.523
2022-01-15 12:00:00,142.095
2022-01-15 13:00:00,154.387
2022-01-15 14:00:00,1836.415
2022-01-15 15:00:00,172.903
2022-01-15 16:00:00,155.75
2022-01-15 17:00:00,152.347
2022-01-15 18:00:00,137.295
2022-01-15 19:00:00,151.232
2022-01-15 20:00:00,165.771
2022-01-15 21:00:00,172.816
2022-01-15 22:00:00,179.476
2022-01-15 23:00:00,158.627
2022-01-16 00:00:00,156.631
2022-01-16 01:00:00,155.015
2022-01-16 02:00:00,169.514
2022-01-16 03:00:00,1927.376
2022-01-16 04:00:00,171.379
2022-01-16 05:00:00,146.187
2022-01-16 06:00:00,151.068
2022-01-16 07:00:00,136.46
2022-01-16 08:00:00,148.784
2022-01-16 09:00:00,159.457
2022-01-16 10:00:00,176.898
2022-01-16 11:00:00,180.673
2022-01-16 12:00:00,153.202
2022-01-16 13:00:00,146.64
2022-01-16 14:00:00,142.367
2022-01-16 15:00:00,156.713
2022-01-16 16:00:00,1869.826
2022-01-16 17:00:00,159.356
2022-01-16 18:00:00,139.482
2022-01-16 19:00:00,146.594
2022-01-16 20:00:00,138.353
2022-01-16 21:00:00,147.956
2022-01-16 22:00:00,161.561
2022-01-16 23:00:00,179.351
2022-01-17 00:00:00,177.391
2022-01-17 01:00:00,162.681
2022-01-17 02:00:00,156.051
2022-01-17 03:00:00,153.318
2022-01-17 04:00:00,167.785
2022-01-17 05:00:00,1889.879
2022-01-17 06:00:00,175.518
2022-01-17 07:00:00,152.63
2022-01-17 08:00:00,150.919
2022-01-17 09:00:00,138.322
2022-01-17 10:00:00,147.491
2022-01-17 11:00:00,160.056
2022-01-17 12:00:00,178.656
2022-01-17 13:00:00,181.673
2022-01-17 14:00:00,161.942
2022-01-17 15:00:00,155.337
2022-01-17 16:00:00,156.001
2022-01-17 17:00:00,172.427
2022-01-17 18:00:00,1930.971
2022-01-17 19:00:00,175.35
2022-01-17 20:00:00,157.548
2022-01-17 21:00:00,149.42
2022-01-17 22:00:00,138.155
2022-01-17 23:00:00,153.824
2022-01-18 00:00:00,164.022
2022-01-18 01:00:00,178.541
2022-01-18 02:00:00,175.913
2022-01-18 03:00:00,163.182
2022-01-18 04:00:00,155.596
2022-01-18 05:00:00,156.598
2022-01-18 06:00:00,174.92
2022-01-18 07:00:00,1943.069
2022-01-18 08:00:00,175.514
2022-01-18 09:00:00,153.555
2022-01-18 10:00:00,159.857
2022-01-18 11:00:00,140.548
2022-01-18 12:00:00,151.645
2022-01-18 13:00:00,171.133
2022-01-18 14:00:00,184.087
2022-01-18 15:00:00,186.022
2022-01-18 16:00:00,169.222
2022-01-18 17:00:00,160.682
2022-01-18 18:00:00,155.899
2022-01-18 19:00:00,175.664
2022-01-18 20:00:00,1983.829
2022-01-18 21:00:00,166.165
2022-01-18 22:00:00,154.226
2022-01-18 23:00:00,156.997
2022-01-19 00:00:00,138.082
2022-01-19 01:00:00,153.221
2022-01-19 02:00:00,166.169
2022-01-19 03:00:00,184.807
2022-01-19 04:00:00,186.844
2022-01-19 05:00:00,160.475
2022-01-19 06:00:00,159.328
2022-01-19 07:00:00,156.604
2022-01-19 08:00:00,170.779
2022-01-19 09:00:00,1953.699
2022-01-19 10:00:00,174.337
2022-01-19 11:00:00,159.772
2022-01-19 12:00:00,155.545
2022-01-19 13:00:00,144.038
2022-01-19 14:00:00,154.284
2022-01-19 15:00:00,170.559
2022-01-19 16:00:00,183.582
2022-01-19 17:00:00,188.407
2022-01-19 18:00:00,167.18
2022-01-19 19:00:00,159.36
2022-01-19 20:00:00,156.666
2022-01-19 21:00:00,173.557
2022-01-19 22:00:00,1987.288
2022-01-19 23:00:00,177.865
2022-01-20 00:00:00,163.114
2022-01-20 01:00:00,156.693
2022-01-20 02:00:00,144.524
2022-01-20 03:00:00,152.626
2022-01-20 04:00:00,168.239
2022-01-20 05:00:00,184.592
2022-01-20 06:00:00,179.993
2022-01-20 07:00:00,160.76
2022-01-20 08:00:00,150.605
2022-01-20 09:00:00,152.302
2022-01-20 10:00:00,168.073
2022-01-20 11:00:00,1959.387
2022-01-20 12:00:00,169.01
2022-01-20 13:00:00,138.457
2022-01-20 14:00:00,134.157
2022-01-20 15:00:00,125.161
2022-01-20 16:00:00,131.317
2022-01-20 17:00:00,147.22
2022-01-20 18:00:00,157.083
2022-01-20 19:00:00,161.543
2022-01-20 20:00:00,137.175
2022-01-20 21:00:00,138.952
2022-01-20 22:00:00,136.236
2022-01-20 23:00:00,164.564
2022-01-21 00:00:00,1740.874
2022-01-21 01:00:00,169.541
2022-01-21 02:00:00,149.732
2022-01-21 03:00:00,142.659
2022-01-21 04:00:00,125.288
2022-01-21 05:00:00,141.697
2022-01-21 06:00:00,163.128
2022-01-21 07:00:00,177.165
2022-01-21 08:00:00,176.655
2022-01-21 09:00:00,148.406
2022-01-21 10:00:00,132.129
2022-01-21 11:00:00,135.919
2022-01-21 12:00:00,165.3
2022-01-21 13:00:00,1827.618
2022-01-21 14:00:00,166.309
2022-01-21 15:00:00,135.738
2022-01-21 16:00:00,133.862
2022-01-21 17:00:00,123.65
2022-01-21 18:00:00,135.488
2022-01-21 19:00:00,155.016
2022-01-21 20:00:00,173.728
2022-01-21 21:00:00,169.987
2022-01-21 22:00:00,141.456
2022-01-21 23:00:00,128.32
2022-01-22 00:00:00,123.628
2022-01-22 01:00:00,135.527
2022-01-22 02:00:00,1722.711
2022-01-22 03:00:00,129.542
2022-01-22 04:00:00,115.247
2022-01-22 05:00:00,105.084
2022-01-22 06:00:00,94.674
2022-01-22 07:00:00,114.96
2022-01-22 08:00:00,131.167
2022-01-22 09:00:00,158.331
2022-01-22 10:00:00,151.36
2022-01-22 11:00:00,127.184
2022-01-22 12:00:00,121.741
2022-01-22 13:00:00,127.974
2022-01-22 14:00:00,133.974
2022-01-22 15:00:00,1511.237
2022-01-22 16:00:00,137.055
2022-01-22 17:00:00,122.562
2022-01-22 18:00:00,128.606
2022-01-22 19:00:00,110.959
2022-01-22 20:00:00,118.029
2022-01-22 21:00:00,137.026
2022-01-22 22:00:00,151.952
2022-01-22 23:00:00,149.701
2022-01-23 00:00:00,132.785
2022-01-23 01:00:00,121.075
2022-01-23 02:00:00,120.445
2022-01-23 03:00:00,141.155
2022-01-23 04:00:00,1571.349
2022-01-23 05:00:00,153.85
2022-01-23 06:00:00,140.102
2022-01-23 07:00:00,132.664
2022-01-23 08:00:00,106.751
2022-01-23 09:00:00,117.672
2022-01-23 10:00:00,136.577
2022-01-23 11:00:00,149.776
2022-01-23 12:00:00,148.995
2022-01-23 13:00:00,126.983
2022-01-23 14:00:00,112.3
2022-01-23 15:00:00,118.837
2022-01-23 16:00:00,124.629
2022-01-23 17:00:00,1569.137
2022-01-23 18:00:00,130.232
2022-01-23 19:00:00,122.417
2022-01-23 20:00:00,106.412
2022-01-23 21:00:00,88.646
2022-01-23 22:00:00,104.498
2022-01-23 23:00:00,126.28
2022-01-24 00:00:00,140.283
2022-01-24 01:00:00,135.156
2022-01-24 02:00:00,118.653
2022-01-24 03:00:00,98.469
2022-01-24 04:00:00,90.263
2022-01-24 05:00:00,91.658
2022-01-24 06:00:00,1352.967
2022-01-24 07:00:00,113.495
2022-01-24 08:00:00,92.416
2022-01-24 09:00:00,72.84
2022-01-24 10:00:00,71.41
2022-01-24 11:00:00,82.51
2022-01-24 12:00:00,115.772
2022-01-24 13:00:00,135.958
1 date Value
2 2022-01-01 00:00:00 72.076
3 2022-01-01 01:00:00 64.442
4 2022-01-01 02:00:00 64.084
5 2022-01-01 03:00:00 60.842
6 2022-01-01 04:00:00 61.798
7 2022-01-01 05:00:00 66.538
8 2022-01-01 06:00:00 72.626
9 2022-01-01 07:00:00 75.181
10 2022-01-01 08:00:00 68.397
11 2022-01-01 09:00:00 67.668
12 2022-01-01 10:00:00 67.021
13 2022-01-01 11:00:00 71.118
14 2022-01-01 12:00:00 811.791
15 2022-01-01 13:00:00 70.55
16 2022-01-01 14:00:00 62.929
17 2022-01-01 15:00:00 64.519
18 2022-01-01 16:00:00 60.544
19 2022-01-01 17:00:00 64.687
20 2022-01-01 18:00:00 64.736
21 2022-01-01 19:00:00 73.698
22 2022-01-01 20:00:00 72.559
23 2022-01-01 21:00:00 63.221
24 2022-01-01 22:00:00 65.418
25 2022-01-01 23:00:00 65.593
26 2022-01-02 00:00:00 71.677
27 2022-01-02 01:00:00 800.131
28 2022-01-02 02:00:00 72.708
29 2022-01-02 03:00:00 65.117
30 2022-01-02 04:00:00 66.532
31 2022-01-02 05:00:00 61.975
32 2022-01-02 06:00:00 62.031
33 2022-01-02 07:00:00 67.875
34 2022-01-02 08:00:00 74.184
35 2022-01-02 09:00:00 77.029
36 2022-01-02 10:00:00 66.156
37 2022-01-02 11:00:00 66.651
38 2022-01-02 12:00:00 67.625
39 2022-01-02 13:00:00 75.857
40 2022-01-02 14:00:00 823.74
41 2022-01-02 15:00:00 81.264
42 2022-01-02 16:00:00 71.058
43 2022-01-02 17:00:00 73.361
44 2022-01-02 18:00:00 68.703
45 2022-01-02 19:00:00 68.985
46 2022-01-02 20:00:00 73.936
47 2022-01-02 21:00:00 80.968
48 2022-01-02 22:00:00 81.962
49 2022-01-02 23:00:00 72.95
50 2022-01-03 00:00:00 74.746
51 2022-01-03 01:00:00 78.924
52 2022-01-03 02:00:00 84.49
53 2022-01-03 03:00:00 911.346
54 2022-01-03 04:00:00 87.215
55 2022-01-03 05:00:00 75.943
56 2022-01-03 06:00:00 75.092
57 2022-01-03 07:00:00 68.641
58 2022-01-03 08:00:00 74.916
59 2022-01-03 09:00:00 80.942
60 2022-01-03 10:00:00 90.667
61 2022-01-03 11:00:00 89.046
62 2022-01-03 12:00:00 80.975
63 2022-01-03 13:00:00 77.369
64 2022-01-03 14:00:00 78.058
65 2022-01-03 15:00:00 83.279
66 2022-01-03 16:00:00 962.143
67 2022-01-03 17:00:00 85.191
68 2022-01-03 18:00:00 71.476
69 2022-01-03 19:00:00 67.829
70 2022-01-03 20:00:00 69.051
71 2022-01-03 21:00:00 74.201
72 2022-01-03 22:00:00 81.372
73 2022-01-03 23:00:00 88.003
74 2022-01-04 00:00:00 91.836
75 2022-01-04 01:00:00 85.066
76 2022-01-04 02:00:00 79.494
77 2022-01-04 03:00:00 79.291
78 2022-01-04 04:00:00 87.107
79 2022-01-04 05:00:00 959.916
80 2022-01-04 06:00:00 93.946
81 2022-01-04 07:00:00 83.91
82 2022-01-04 08:00:00 83.689
83 2022-01-04 09:00:00 78.077
84 2022-01-04 10:00:00 83.19
85 2022-01-04 11:00:00 88.15
86 2022-01-04 12:00:00 96.579
87 2022-01-04 13:00:00 97.246
88 2022-01-04 14:00:00 84.463
89 2022-01-04 15:00:00 86.071
90 2022-01-04 16:00:00 86.09
91 2022-01-04 17:00:00 94.293
92 2022-01-04 18:00:00 1055.704
93 2022-01-04 19:00:00 100.568
94 2022-01-04 20:00:00 94.862
95 2022-01-04 21:00:00 93.21
96 2022-01-04 22:00:00 81.245
97 2022-01-04 23:00:00 82.785
98 2022-01-05 00:00:00 91.484
99 2022-01-05 01:00:00 107.126
100 2022-01-05 02:00:00 106.245
101 2022-01-05 03:00:00 95.662
102 2022-01-05 04:00:00 90.03
103 2022-01-05 05:00:00 91.239
104 2022-01-05 06:00:00 102.138
105 2022-01-05 07:00:00 1136.594
106 2022-01-05 08:00:00 108.164
107 2022-01-05 09:00:00 94.766
108 2022-01-05 10:00:00 95.724
109 2022-01-05 11:00:00 86.386
110 2022-01-05 12:00:00 89.002
111 2022-01-05 13:00:00 99.05
112 2022-01-05 14:00:00 111.044
113 2022-01-05 15:00:00 107.758
114 2022-01-05 16:00:00 95.891
115 2022-01-05 17:00:00 94.541
116 2022-01-05 18:00:00 92.986
117 2022-01-05 19:00:00 105.056
118 2022-01-05 20:00:00 1180.367
119 2022-01-05 21:00:00 113.136
120 2022-01-05 22:00:00 97.313
121 2022-01-05 23:00:00 95.335
122 2022-01-06 00:00:00 86.587
123 2022-01-06 01:00:00 90.83
124 2022-01-06 02:00:00 94.419
125 2022-01-06 03:00:00 109.995
126 2022-01-06 04:00:00 109.179
127 2022-01-06 05:00:00 96.39
128 2022-01-06 06:00:00 92.24
129 2022-01-06 07:00:00 95.165
130 2022-01-06 08:00:00 101.367
131 2022-01-06 09:00:00 1181.956
132 2022-01-06 10:00:00 105.965
133 2022-01-06 11:00:00 90.912
134 2022-01-06 12:00:00 93.568
135 2022-01-06 13:00:00 86.575
136 2022-01-06 14:00:00 90.75
137 2022-01-06 15:00:00 99.98
138 2022-01-06 16:00:00 119.945
139 2022-01-06 17:00:00 126.652
140 2022-01-06 18:00:00 107.675
141 2022-01-06 19:00:00 100.677
142 2022-01-06 20:00:00 101.663
143 2022-01-06 21:00:00 117.417
144 2022-01-06 22:00:00 1241.778
145 2022-01-06 23:00:00 119.436
146 2022-01-07 00:00:00 103.635
147 2022-01-07 01:00:00 108.149
148 2022-01-07 02:00:00 94.329
149 2022-01-07 03:00:00 98.181
150 2022-01-07 04:00:00 112.983
151 2022-01-07 05:00:00 119.701
152 2022-01-07 06:00:00 125.724
153 2022-01-07 07:00:00 107.179
154 2022-01-07 08:00:00 108.583
155 2022-01-07 09:00:00 107.546
156 2022-01-07 10:00:00 112.167
157 2022-01-07 11:00:00 1317.614
158 2022-01-07 12:00:00 125.429
159 2022-01-07 13:00:00 109.359
160 2022-01-07 14:00:00 107.966
161 2022-01-07 15:00:00 100.317
162 2022-01-07 16:00:00 107.595
163 2022-01-07 17:00:00 113.584
164 2022-01-07 18:00:00 126.626
165 2022-01-07 19:00:00 124.309
166 2022-01-07 20:00:00 111.9
167 2022-01-07 21:00:00 108.331
168 2022-01-07 22:00:00 107.034
169 2022-01-07 23:00:00 124.95
170 2022-01-08 00:00:00 1367.401
171 2022-01-08 01:00:00 126.887
172 2022-01-08 02:00:00 109.086
173 2022-01-08 03:00:00 106.803
174 2022-01-08 04:00:00 95.341
175 2022-01-08 05:00:00 101.892
176 2022-01-08 06:00:00 116.698
177 2022-01-08 07:00:00 134.789
178 2022-01-08 08:00:00 122.28
179 2022-01-08 09:00:00 112.03
180 2022-01-08 10:00:00 107.235
181 2022-01-08 11:00:00 107.317
182 2022-01-08 12:00:00 117.127
183 2022-01-08 13:00:00 1357.485
184 2022-01-08 14:00:00 124.043
185 2022-01-08 15:00:00 106.754
186 2022-01-08 16:00:00 108.607
187 2022-01-08 17:00:00 102.222
188 2022-01-08 18:00:00 112.257
189 2022-01-08 19:00:00 126.2
190 2022-01-08 20:00:00 140.582
191 2022-01-08 21:00:00 139.268
192 2022-01-08 22:00:00 117.773
193 2022-01-08 23:00:00 113.515
194 2022-01-09 00:00:00 111.217
195 2022-01-09 01:00:00 124.314
196 2022-01-09 02:00:00 1426.753
197 2022-01-09 03:00:00 133.468
198 2022-01-09 04:00:00 120.783
199 2022-01-09 05:00:00 115.584
200 2022-01-09 06:00:00 106.49
201 2022-01-09 07:00:00 111.2
202 2022-01-09 08:00:00 128.537
203 2022-01-09 09:00:00 141.139
204 2022-01-09 10:00:00 148.031
205 2022-01-09 11:00:00 121.057
206 2022-01-09 12:00:00 117.165
207 2022-01-09 13:00:00 116.659
208 2022-01-09 14:00:00 131.695
209 2022-01-09 15:00:00 1491.807
210 2022-01-09 16:00:00 132.233
211 2022-01-09 17:00:00 124.345
212 2022-01-09 18:00:00 122.803
213 2022-01-09 19:00:00 111.194
214 2022-01-09 20:00:00 115.915
215 2022-01-09 21:00:00 126.031
216 2022-01-09 22:00:00 138.083
217 2022-01-09 23:00:00 139.614
218 2022-01-10 00:00:00 124.594
219 2022-01-10 01:00:00 119.943
220 2022-01-10 02:00:00 120.824
221 2022-01-10 03:00:00 143.264
222 2022-01-10 04:00:00 1518.844
223 2022-01-10 05:00:00 132.923
224 2022-01-10 06:00:00 116.26
225 2022-01-10 07:00:00 121.806
226 2022-01-10 08:00:00 115.909
227 2022-01-10 09:00:00 118.556
228 2022-01-10 10:00:00 130.719
229 2022-01-10 11:00:00 143.146
230 2022-01-10 12:00:00 146.257
231 2022-01-10 13:00:00 134.042
232 2022-01-10 14:00:00 128.8
233 2022-01-10 15:00:00 122.119
234 2022-01-10 16:00:00 137.027
235 2022-01-10 17:00:00 1547.564
236 2022-01-10 18:00:00 143.148
237 2022-01-10 19:00:00 117.505
238 2022-01-10 20:00:00 118.823
239 2022-01-10 21:00:00 111.147
240 2022-01-10 22:00:00 122.745
241 2022-01-10 23:00:00 131.945
242 2022-01-11 00:00:00 144.042
243 2022-01-11 01:00:00 144.107
244 2022-01-11 02:00:00 129.099
245 2022-01-11 03:00:00 124.058
246 2022-01-11 04:00:00 127.928
247 2022-01-11 05:00:00 133.633
248 2022-01-11 06:00:00 1548.18
249 2022-01-11 07:00:00 137.39
250 2022-01-11 08:00:00 121.125
251 2022-01-11 09:00:00 126.201
252 2022-01-11 10:00:00 118.33
253 2022-01-11 11:00:00 121.946
254 2022-01-11 12:00:00 129.054
255 2022-01-11 13:00:00 148.563
256 2022-01-11 14:00:00 142.166
257 2022-01-11 15:00:00 132.766
258 2022-01-11 16:00:00 126.405
259 2022-01-11 17:00:00 126.014
260 2022-01-11 18:00:00 139.605
261 2022-01-11 19:00:00 1569.566
262 2022-01-11 20:00:00 139.269
263 2022-01-11 21:00:00 128.056
264 2022-01-11 22:00:00 134.599
265 2022-01-11 23:00:00 119.596
266 2022-01-12 00:00:00 120.469
267 2022-01-12 01:00:00 136.697
268 2022-01-12 02:00:00 157.967
269 2022-01-12 03:00:00 156.392
270 2022-01-12 04:00:00 133.435
271 2022-01-12 05:00:00 130.321
272 2022-01-12 06:00:00 131.799
273 2022-01-12 07:00:00 143.919
274 2022-01-12 08:00:00 1632.52
275 2022-01-12 09:00:00 153.119
276 2022-01-12 10:00:00 131.25
277 2022-01-12 11:00:00 132.54
278 2022-01-12 12:00:00 120.392
279 2022-01-12 13:00:00 126.496
280 2022-01-12 14:00:00 146.639
281 2022-01-12 15:00:00 153.375
282 2022-01-12 16:00:00 151.757
283 2022-01-12 17:00:00 133.235
284 2022-01-12 18:00:00 129.229
285 2022-01-12 19:00:00 124.074
286 2022-01-12 20:00:00 136.675
287 2022-01-12 21:00:00 1638.781
288 2022-01-12 22:00:00 143.097
289 2022-01-12 23:00:00 127.774
290 2022-01-13 00:00:00 127.348
291 2022-01-13 01:00:00 118.414
292 2022-01-13 02:00:00 125.516
293 2022-01-13 03:00:00 138.913
294 2022-01-13 04:00:00 159.638
295 2022-01-13 05:00:00 167.717
296 2022-01-13 06:00:00 137.474
297 2022-01-13 07:00:00 132.871
298 2022-01-13 08:00:00 134.591
299 2022-01-13 09:00:00 147.39
300 2022-01-13 10:00:00 1660.744
301 2022-01-13 11:00:00 153.915
302 2022-01-13 12:00:00 138.446
303 2022-01-13 13:00:00 138.362
304 2022-01-13 14:00:00 124.885
305 2022-01-13 15:00:00 135.014
306 2022-01-13 16:00:00 147.23
307 2022-01-13 17:00:00 160.939
308 2022-01-13 18:00:00 162.998
309 2022-01-13 19:00:00 144.095
310 2022-01-13 20:00:00 143.399
311 2022-01-13 21:00:00 147.318
312 2022-01-13 22:00:00 155.809
313 2022-01-13 23:00:00 1752.41
314 2022-01-14 00:00:00 162.245
315 2022-01-14 01:00:00 135.873
316 2022-01-14 02:00:00 138.495
317 2022-01-14 03:00:00 130.325
318 2022-01-14 04:00:00 136.525
319 2022-01-14 05:00:00 147.624
320 2022-01-14 06:00:00 169.108
321 2022-01-14 07:00:00 164.925
322 2022-01-14 08:00:00 152.353
323 2022-01-14 09:00:00 152.153
324 2022-01-14 10:00:00 146.425
325 2022-01-14 11:00:00 160.993
326 2022-01-14 12:00:00 1797.045
327 2022-01-14 13:00:00 159.602
328 2022-01-14 14:00:00 138.682
329 2022-01-14 15:00:00 144.143
330 2022-01-14 16:00:00 133.418
331 2022-01-14 17:00:00 146.249
332 2022-01-14 18:00:00 158.591
333 2022-01-14 19:00:00 174.995
334 2022-01-14 20:00:00 174.745
335 2022-01-14 21:00:00 156.709
336 2022-01-14 22:00:00 147.334
337 2022-01-14 23:00:00 139.397
338 2022-01-15 00:00:00 154.318
339 2022-01-15 01:00:00 1828.184
340 2022-01-15 02:00:00 161.387
341 2022-01-15 03:00:00 138.081
342 2022-01-15 04:00:00 145.169
343 2022-01-15 05:00:00 137.504
344 2022-01-15 06:00:00 144.891
345 2022-01-15 07:00:00 157.377
346 2022-01-15 08:00:00 179.42
347 2022-01-15 09:00:00 173.707
348 2022-01-15 10:00:00 154.874
349 2022-01-15 11:00:00 147.523
350 2022-01-15 12:00:00 142.095
351 2022-01-15 13:00:00 154.387
352 2022-01-15 14:00:00 1836.415
353 2022-01-15 15:00:00 172.903
354 2022-01-15 16:00:00 155.75
355 2022-01-15 17:00:00 152.347
356 2022-01-15 18:00:00 137.295
357 2022-01-15 19:00:00 151.232
358 2022-01-15 20:00:00 165.771
359 2022-01-15 21:00:00 172.816
360 2022-01-15 22:00:00 179.476
361 2022-01-15 23:00:00 158.627
362 2022-01-16 00:00:00 156.631
363 2022-01-16 01:00:00 155.015
364 2022-01-16 02:00:00 169.514
365 2022-01-16 03:00:00 1927.376
366 2022-01-16 04:00:00 171.379
367 2022-01-16 05:00:00 146.187
368 2022-01-16 06:00:00 151.068
369 2022-01-16 07:00:00 136.46
370 2022-01-16 08:00:00 148.784
371 2022-01-16 09:00:00 159.457
372 2022-01-16 10:00:00 176.898
373 2022-01-16 11:00:00 180.673
374 2022-01-16 12:00:00 153.202
375 2022-01-16 13:00:00 146.64
376 2022-01-16 14:00:00 142.367
377 2022-01-16 15:00:00 156.713
378 2022-01-16 16:00:00 1869.826
379 2022-01-16 17:00:00 159.356
380 2022-01-16 18:00:00 139.482
381 2022-01-16 19:00:00 146.594
382 2022-01-16 20:00:00 138.353
383 2022-01-16 21:00:00 147.956
384 2022-01-16 22:00:00 161.561
385 2022-01-16 23:00:00 179.351
386 2022-01-17 00:00:00 177.391
387 2022-01-17 01:00:00 162.681
388 2022-01-17 02:00:00 156.051
389 2022-01-17 03:00:00 153.318
390 2022-01-17 04:00:00 167.785
391 2022-01-17 05:00:00 1889.879
392 2022-01-17 06:00:00 175.518
393 2022-01-17 07:00:00 152.63
394 2022-01-17 08:00:00 150.919
395 2022-01-17 09:00:00 138.322
396 2022-01-17 10:00:00 147.491
397 2022-01-17 11:00:00 160.056
398 2022-01-17 12:00:00 178.656
399 2022-01-17 13:00:00 181.673
400 2022-01-17 14:00:00 161.942
401 2022-01-17 15:00:00 155.337
402 2022-01-17 16:00:00 156.001
403 2022-01-17 17:00:00 172.427
404 2022-01-17 18:00:00 1930.971
405 2022-01-17 19:00:00 175.35
406 2022-01-17 20:00:00 157.548
407 2022-01-17 21:00:00 149.42
408 2022-01-17 22:00:00 138.155
409 2022-01-17 23:00:00 153.824
410 2022-01-18 00:00:00 164.022
411 2022-01-18 01:00:00 178.541
412 2022-01-18 02:00:00 175.913
413 2022-01-18 03:00:00 163.182
414 2022-01-18 04:00:00 155.596
415 2022-01-18 05:00:00 156.598
416 2022-01-18 06:00:00 174.92
417 2022-01-18 07:00:00 1943.069
418 2022-01-18 08:00:00 175.514
419 2022-01-18 09:00:00 153.555
420 2022-01-18 10:00:00 159.857
421 2022-01-18 11:00:00 140.548
422 2022-01-18 12:00:00 151.645
423 2022-01-18 13:00:00 171.133
424 2022-01-18 14:00:00 184.087
425 2022-01-18 15:00:00 186.022
426 2022-01-18 16:00:00 169.222
427 2022-01-18 17:00:00 160.682
428 2022-01-18 18:00:00 155.899
429 2022-01-18 19:00:00 175.664
430 2022-01-18 20:00:00 1983.829
431 2022-01-18 21:00:00 166.165
432 2022-01-18 22:00:00 154.226
433 2022-01-18 23:00:00 156.997
434 2022-01-19 00:00:00 138.082
435 2022-01-19 01:00:00 153.221
436 2022-01-19 02:00:00 166.169
437 2022-01-19 03:00:00 184.807
438 2022-01-19 04:00:00 186.844
439 2022-01-19 05:00:00 160.475
440 2022-01-19 06:00:00 159.328
441 2022-01-19 07:00:00 156.604
442 2022-01-19 08:00:00 170.779
443 2022-01-19 09:00:00 1953.699
444 2022-01-19 10:00:00 174.337
445 2022-01-19 11:00:00 159.772
446 2022-01-19 12:00:00 155.545
447 2022-01-19 13:00:00 144.038
448 2022-01-19 14:00:00 154.284
449 2022-01-19 15:00:00 170.559
450 2022-01-19 16:00:00 183.582
451 2022-01-19 17:00:00 188.407
452 2022-01-19 18:00:00 167.18
453 2022-01-19 19:00:00 159.36
454 2022-01-19 20:00:00 156.666
455 2022-01-19 21:00:00 173.557
456 2022-01-19 22:00:00 1987.288
457 2022-01-19 23:00:00 177.865
458 2022-01-20 00:00:00 163.114
459 2022-01-20 01:00:00 156.693
460 2022-01-20 02:00:00 144.524
461 2022-01-20 03:00:00 152.626
462 2022-01-20 04:00:00 168.239
463 2022-01-20 05:00:00 184.592
464 2022-01-20 06:00:00 179.993
465 2022-01-20 07:00:00 160.76
466 2022-01-20 08:00:00 150.605
467 2022-01-20 09:00:00 152.302
468 2022-01-20 10:00:00 168.073
469 2022-01-20 11:00:00 1959.387
470 2022-01-20 12:00:00 169.01
471 2022-01-20 13:00:00 138.457
472 2022-01-20 14:00:00 134.157
473 2022-01-20 15:00:00 125.161
474 2022-01-20 16:00:00 131.317
475 2022-01-20 17:00:00 147.22
476 2022-01-20 18:00:00 157.083
477 2022-01-20 19:00:00 161.543
478 2022-01-20 20:00:00 137.175
479 2022-01-20 21:00:00 138.952
480 2022-01-20 22:00:00 136.236
481 2022-01-20 23:00:00 164.564
482 2022-01-21 00:00:00 1740.874
483 2022-01-21 01:00:00 169.541
484 2022-01-21 02:00:00 149.732
485 2022-01-21 03:00:00 142.659
486 2022-01-21 04:00:00 125.288
487 2022-01-21 05:00:00 141.697
488 2022-01-21 06:00:00 163.128
489 2022-01-21 07:00:00 177.165
490 2022-01-21 08:00:00 176.655
491 2022-01-21 09:00:00 148.406
492 2022-01-21 10:00:00 132.129
493 2022-01-21 11:00:00 135.919
494 2022-01-21 12:00:00 165.3
495 2022-01-21 13:00:00 1827.618
496 2022-01-21 14:00:00 166.309
497 2022-01-21 15:00:00 135.738
498 2022-01-21 16:00:00 133.862
499 2022-01-21 17:00:00 123.65
500 2022-01-21 18:00:00 135.488
501 2022-01-21 19:00:00 155.016
502 2022-01-21 20:00:00 173.728
503 2022-01-21 21:00:00 169.987
504 2022-01-21 22:00:00 141.456
505 2022-01-21 23:00:00 128.32
506 2022-01-22 00:00:00 123.628
507 2022-01-22 01:00:00 135.527
508 2022-01-22 02:00:00 1722.711
509 2022-01-22 03:00:00 129.542
510 2022-01-22 04:00:00 115.247
511 2022-01-22 05:00:00 105.084
512 2022-01-22 06:00:00 94.674
513 2022-01-22 07:00:00 114.96
514 2022-01-22 08:00:00 131.167
515 2022-01-22 09:00:00 158.331
516 2022-01-22 10:00:00 151.36
517 2022-01-22 11:00:00 127.184
518 2022-01-22 12:00:00 121.741
519 2022-01-22 13:00:00 127.974
520 2022-01-22 14:00:00 133.974
521 2022-01-22 15:00:00 1511.237
522 2022-01-22 16:00:00 137.055
523 2022-01-22 17:00:00 122.562
524 2022-01-22 18:00:00 128.606
525 2022-01-22 19:00:00 110.959
526 2022-01-22 20:00:00 118.029
527 2022-01-22 21:00:00 137.026
528 2022-01-22 22:00:00 151.952
529 2022-01-22 23:00:00 149.701
530 2022-01-23 00:00:00 132.785
531 2022-01-23 01:00:00 121.075
532 2022-01-23 02:00:00 120.445
533 2022-01-23 03:00:00 141.155
534 2022-01-23 04:00:00 1571.349
535 2022-01-23 05:00:00 153.85
536 2022-01-23 06:00:00 140.102
537 2022-01-23 07:00:00 132.664
538 2022-01-23 08:00:00 106.751
539 2022-01-23 09:00:00 117.672
540 2022-01-23 10:00:00 136.577
541 2022-01-23 11:00:00 149.776
542 2022-01-23 12:00:00 148.995
543 2022-01-23 13:00:00 126.983
544 2022-01-23 14:00:00 112.3
545 2022-01-23 15:00:00 118.837
546 2022-01-23 16:00:00 124.629
547 2022-01-23 17:00:00 1569.137
548 2022-01-23 18:00:00 130.232
549 2022-01-23 19:00:00 122.417
550 2022-01-23 20:00:00 106.412
551 2022-01-23 21:00:00 88.646
552 2022-01-23 22:00:00 104.498
553 2022-01-23 23:00:00 126.28
554 2022-01-24 00:00:00 140.283
555 2022-01-24 01:00:00 135.156
556 2022-01-24 02:00:00 118.653
557 2022-01-24 03:00:00 98.469
558 2022-01-24 04:00:00 90.263
559 2022-01-24 05:00:00 91.658
560 2022-01-24 06:00:00 1352.967
561 2022-01-24 07:00:00 113.495
562 2022-01-24 08:00:00 92.416
563 2022-01-24 09:00:00 72.84
564 2022-01-24 10:00:00 71.41
565 2022-01-24 11:00:00 82.51
566 2022-01-24 12:00:00 115.772
567 2022-01-24 13:00:00 135.958

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,25 +0,0 @@
import joblib
import numpy as np
def load_load_model(path):
gbm = joblib.load(path)
return gbm
def load_forecast(inputs: np.ndarray, model):
"""_summary_
Args:
inputs (np.ndarray): 输入序列
model (_type_): _description_
"""
out = model.predict([inputs])
return out
if __name__ == '__main__':
model = load_load_model('./models/load_pred.joblib')
inputs = np.random.randn(24)
print(inputs.shape)
out = load_forecast(inputs, model)
print(out)

View File

@ -1,73 +0,0 @@
import pandas as pd
import numpy as np
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import joblib
from logzero import logger
def time_series_to_supervised(data, columns, n_in=24, n_out=1,dropnan=True):
"""
:param data:作为列表或2D NumPy数组的观察序列需要
:param n_in:作为输入的滞后观察数X值可以在[1..len数据]之间可选默认为1
:param n_out:作为输出的观测数量y值可以在[0..len数据]之间可选的默认为1
:param dropnan:Boolean是否删除具有NaN值的行可选的默认为True
:return:
"""
logger.info(f"正在处理训练数据size{data.shape}")
n_vars = 1 if type(data) is list else data.shape[1]
df = pd.DataFrame(data)
origNames = columns
cols, names = list(), list()
cols.append(df.shift(0))
names += [('%s' % origNames[j]) for j in range(n_vars)]
n_in = max(1, n_in)
for i in range(n_in-1, 0, -1):
time = '(t-%d)' % i
cols.append(df.shift(i))
names += [('%s%s' % (origNames[j], time)) for j in range(n_vars)]
n_out = max(n_out, 0)
for i in range(1, n_out+1):
time = '(t+%d)' % i
cols.append(df.shift(-i))
names += [('%s%s' % (origNames[j], time)) for j in range(n_vars)]
agg = pd.concat(cols, axis=1)
agg.columns = names
if dropnan:
agg.dropna(inplace=True)
return agg
def train_model(train_data: pd.DataFrame):
"""训练模型的函数,需要根据模型类型实际调整
Args:
data (pd.DataFrame): 训练集
"""
# 特征和输出列名,需要根据业务场景灵活处理
fea_cols = train_data.columns[:-1].tolist()
out_cols = train_data.columns[-1:].tolist()
logger.info(fea_cols, out_cols)
X = train_data[fea_cols]
y = train_data[out_cols]
train_X,test_X,train_y,test_y = train_test_split(X, y, test_size=0.2, random_state=42)
valid_X,test_X,valid_y,test_y = train_test_split(test_X, test_y, test_size=0.5, random_state=42)
# 参数
other_params = {'learning_rate': 0.1, 'n_estimators': 150, 'max_depth': 10, 'min_child_weight': 1, 'seed': 0, 'subsample': 0.8, 'colsample_bytree': 0.8, 'gamma': 0, 'reg_alpha': 0, 'reg_lambda': 1}
print(train_X.shape, train_y.shape)
gbm = xgb.XGBRegressor(objective='reg:squarederror',**other_params)
gbm.fit(train_X.values, train_y.values, eval_set=[(valid_X.values, valid_y.values)], early_stopping_rounds=20)
y_pred = gbm.predict(test_X.values)
logger.info(f"Root Mean Squared Error on Test set: {np.sqrt(mean_squared_error(test_y, y_pred))}")
logger.info(f"R2 score on Test set: {r2_score(test_y, y_pred)}")
joblib.dump(gbm, './models/load_pred.joblib')
logger.info(f"save_path: ./models/load_pred.joblib")
if __name__ == '__main__':
data = pd.read_csv('./data/load_data_hourly.csv', index_col=0)
agg = time_series_to_supervised(data.values, data.columns, 24, 1)
train_model(agg)

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,26 +0,0 @@
import joblib
import numpy as np
def load_model(path):
gbm = joblib.load(path)
return gbm
def pv_forecast(inputs: np.ndarray, model):
"""_summary_
Args:
inputs (np.ndarray): 输入序列
model (_type_): _description_
"""
out = model.predict([inputs])
return out
# if __name__ == '__main__':
# model = load_model('models/pv_pred.joblib')
# inputs = np.random.randn(24)
#
# print(inputs.shape)
# out = pv_forecast(inputs, model)
# print(out)

View File

@ -1,79 +0,0 @@
import pandas as pd
import numpy as np
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import joblib
from logzero import logger
def time_series_to_supervised(data, columns, n_in=24, n_out=1,dropnan=True):
"""
:param data:作为列表或2D NumPy数组的观察序列需要
:param n_in:作为输入的滞后观察数X值可以在[1..len数据]之间可选默认为1
:param n_out:作为输出的观测数量y值可以在[0..len数据]之间可选的默认为1
:param dropnan:Boolean是否删除具有NaN值的行可选的默认为True
:return:
"""
logger.info(f"正在处理训练数据size{data.shape}")
n_vars = 1 if type(data) is list else data.shape[1]
df = pd.DataFrame(data)
origNames = columns
cols, names = list(), list()
cols.append(df.shift(0))
names += [('%s' % origNames[j]) for j in range(n_vars)]
n_in = max(1, n_in)
for i in range(n_in-1, 0, -1):
time = '(t-%d)' % i
cols.append(df.shift(i))
names += [('%s%s' % (origNames[j], time)) for j in range(n_vars)]
n_out = max(n_out, 0)
for i in range(1, n_out+1):
time = '(t+%d)' % i
cols.append(df.shift(-i))
names += [('%s%s' % (origNames[j], time)) for j in range(n_vars)]
agg = pd.concat(cols, axis=1)
agg.columns = names
if dropnan:
agg.dropna(inplace=True)
return agg
def train_model(train_data: pd.DataFrame):
"""训练模型的函数,需要根据模型类型实际调整
Args:
data (pd.DataFrame): 训练集
"""
# 特征和输出列名,需要根据业务场景灵活处理
fea_cols = train_data.columns[:-1].tolist()
out_cols = train_data.columns[-1:].tolist()
logger.info(fea_cols, out_cols)
X = train_data[fea_cols]
y = train_data[out_cols]
# 8:1:1
train_X,test_X,train_y,test_y = train_test_split(X, y, test_size=0.2, random_state=42)
valid_X,test_X,valid_y,test_y = train_test_split(test_X, test_y, test_size=0.5, random_state=42)
# 参数
other_params = {'learning_rate': 0.1, 'n_estimators': 150, 'max_depth': 10, 'min_child_weight': 1, 'seed': 0, 'subsample': 0.8, 'colsample_bytree': 0.8, 'gamma': 0, 'reg_alpha': 0, 'reg_lambda': 1}
print(train_X.shape, train_y.shape)
print("测试集test_X:",test_X.shape, "测试集test_y:",test_y.shape)
gbm = xgb.XGBRegressor(objective='reg:squarederror',**other_params)
gbm.fit(train_X.values,
train_y.values,
eval_set=[(valid_X.values, valid_y.values)],
early_stopping_rounds=20)
y_pred = gbm.predict(test_X.values)
logger.info(f"Root Mean Squared Error on Test set: {np.sqrt(mean_squared_error(test_y, y_pred))}")
logger.info(f"R2 score on Test set: {r2_score(test_y, y_pred)}")
joblib.dump(gbm, './models/pv_pred.joblib')
logger.info(f"save_path: ./models/pv_pred.joblib")
if __name__ == '__main__':
data = pd.read_csv('./data/pv_data_hourly.csv', index_col=0)
agg = time_series_to_supervised(data.values, data.columns, 24, 1)
train_model(agg)

View File

@ -1,13 +0,0 @@
EMD_signal==1.6.0
matplotlib==3.7.0
numpy==1.22.0
pandas==1.5.3
PyEMD==1.0.0
scikit_learn==1.2.1
seaborn==0.13.2
xlrd==2.0.1
vmdpy==0.2
scikit-optimize==0.10.1
xgboost==1.6.0
logzero==1.7.0
flask==3.1.0

View File

@ -1,103 +0,0 @@
from flask import request, Flask, jsonify
from pv.pv_inference import load_model, pv_forecast
from carbon.carbon_inference import load_carbon_model,carbon_forecast
from water.water_inference import load_water_model,water_forecast
from load.load_inference import load_load_model,load_forecast
from logzero import logger
import numpy as np
app = Flask(__name__)
pv_model_gbm = load_model('./pv/models/pv_pred.joblib')
carbon_model_gbm = load_carbon_model('./carbon/models/carbon_pred.joblib')
water_model_gbm = load_water_model('./water/models/water_pred.joblib')
load_model_gbm = load_load_model('./load/models/load_pred.joblib')
@app.route('/pv', methods=['POST'])
def run_pv_forecast():
try:
data = request.json
if not data or 'inputs' not in data:
return jsonify({"error": "Invalid data"}), 400
inputs = data.get('inputs')
# 转为1维数组
inputs = np.array(inputs)
if inputs.ndim != 1:
inputs = inputs.flatten()
logger.info(f"pv history inputs: {inputs}")
# 调用预测函数
out = pv_forecast(inputs, pv_model_gbm)
# 将 NumPy 数组转换为列表
results = {"result": out.tolist()} # 使用 .tolist() 转换为列表
return jsonify(results), 200
except Exception as e:
logger.error(f"Error in pv_forecast: {e}", exc_info=True)
return jsonify({"error": str(e)}), 500
@app.route('/carbon', methods=['POST'])
def run_carbon_forecast():
try:
data = request.json
if not data or 'inputs' not in data:
return jsonify({"error": "Invalid data"}), 400
inputs = data.get('inputs')
# 转为1维数组
inputs = np.array(inputs)
if inputs.ndim != 1:
inputs = inputs.flatten()
logger.info(f"carbon history inputs: {inputs}")
# 调用预测函数
out = carbon_forecast(inputs, carbon_model_gbm)
# 将 NumPy 数组转换为列表
results = {"result": out.tolist()} # 使用 .tolist() 转换为列表
return jsonify(results), 200
except Exception as e:
logger.error(f"Error in carbon_forecast: {e}", exc_info=True)
return jsonify({"error": str(e)}), 500
@app.route('/water', methods=['POST'])
def run_water_forecast():
try:
data = request.json
if not data or 'inputs' not in data:
return jsonify({"error": "Invalid data"}), 400
inputs = data.get('inputs')
# 转为1维数组
inputs = np.array(inputs)
if inputs.ndim != 1:
inputs = inputs.flatten()
logger.info(f"water history inputs: {inputs}")
# 调用预测函数
out = water_forecast(inputs, water_model_gbm)
# 将 NumPy 数组转换为列表
results = {"result": out.tolist()} # 使用 .tolist() 转换为列表
return jsonify(results), 200
except Exception as e:
logger.error(f"Error in water_forecast: {e}", exc_info=True)
return jsonify({"error": str(e)}), 500
@app.route('/load', methods=['POST'])
def run_load_forecast():
try:
data = request.json
if not data or 'inputs' not in data:
return jsonify({"error": "Invalid data"}), 400
inputs = data.get('inputs')
# 转为1维数组
inputs = np.array(inputs)
if inputs.ndim != 1:
inputs = inputs.flatten()
logger.info(f"load history inputs: {inputs}")
# 调用预测函数
out = load_forecast(inputs, load_model_gbm)
# 将 NumPy 数组转换为列表
results = {"result": out.tolist()} # 使用 .tolist() 转换为列表
return jsonify(results), 200
except Exception as e:
logger.error(f"Error in load_forecast: {e}", exc_info=True)
return jsonify({"error": str(e)}), 500
if __name__=='__main__':
app.run(host='0.0.0.0', port='2467')

View File

@ -1,21 +0,0 @@
import requests
import pandas as pd
import numpy as np
# 这里使用的是load进行预测可改(load/pv/water/carbon)
url = "http://127.0.0.1:2467/load"
data = {
"inputs":(np.random.randn(24)*100).tolist()
}
response = requests.post(url, json=data)
print("Status Code:", response.status_code) # 打印状态码
print("Response Content:", response.text) # 打印响应内容
if response.status_code == 200:
try:
print(response.json()) # 尝试解析 JSON
except requests.exceptions.JSONDecodeError as e:
print("JSON Decode Error:", e)
else:
print("Error:", response.status_code)

File diff suppressed because it is too large Load Diff

View File

@ -1,25 +0,0 @@
import joblib
import numpy as np
def load_water_model(path):
gbm = joblib.load(path)
return gbm
def water_forecast(inputs: np.ndarray, model):
"""_summary_
Args:
inputs (np.ndarray): 输入序列
model (_type_): _description_
"""
out = model.predict([inputs])
return out
if __name__ == '__main__':
model = load_water_model('./models/water_pred.joblib')
inputs = np.random.randn(24)
print(inputs.shape)
out = water_forecast(inputs, model)
print(out)

View File

@ -1,73 +0,0 @@
import pandas as pd
import numpy as np
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import joblib
from logzero import logger
def time_series_to_supervised(data, columns, n_in=24, n_out=1,dropnan=True):
"""
:param data:作为列表或2D NumPy数组的观察序列需要
:param n_in:作为输入的滞后观察数X值可以在[1..len数据]之间可选默认为1
:param n_out:作为输出的观测数量y值可以在[0..len数据]之间可选的默认为1
:param dropnan:Boolean是否删除具有NaN值的行可选的默认为True
:return:
"""
logger.info(f"正在处理训练数据size{data.shape}")
n_vars = 1 if type(data) is list else data.shape[1]
df = pd.DataFrame(data)
origNames = columns
cols, names = list(), list()
cols.append(df.shift(0))
names += [('%s' % origNames[j]) for j in range(n_vars)]
n_in = max(1, n_in)
for i in range(n_in-1, 0, -1):
time = '(t-%d)' % i
cols.append(df.shift(i))
names += [('%s%s' % (origNames[j], time)) for j in range(n_vars)]
n_out = max(n_out, 0)
for i in range(1, n_out+1):
time = '(t+%d)' % i
cols.append(df.shift(-i))
names += [('%s%s' % (origNames[j], time)) for j in range(n_vars)]
agg = pd.concat(cols, axis=1)
agg.columns = names
if dropnan:
agg.dropna(inplace=True)
return agg
def train_model(train_data: pd.DataFrame):
"""训练模型的函数,需要根据模型类型实际调整
Args:
data (pd.DataFrame): 训练集
"""
# 特征和输出列名,需要根据业务场景灵活处理
fea_cols = train_data.columns[:-1].tolist()
out_cols = train_data.columns[-1:].tolist()
logger.info(fea_cols, out_cols)
X = train_data[fea_cols]
y = train_data[out_cols]
train_X,test_X,train_y,test_y = train_test_split(X, y, test_size=0.2, random_state=42)
valid_X,test_X,valid_y,test_y = train_test_split(test_X, test_y, test_size=0.5, random_state=42)
# 参数
other_params = {'learning_rate': 0.1, 'n_estimators': 150, 'max_depth': 10, 'min_child_weight': 1, 'seed': 0, 'subsample': 0.8, 'colsample_bytree': 0.8, 'gamma': 0, 'reg_alpha': 0, 'reg_lambda': 1}
print(train_X.shape, train_y.shape)
gbm = xgb.XGBRegressor(objective='reg:squarederror',**other_params)
gbm.fit(train_X.values, train_y.values, eval_set=[(valid_X.values, valid_y.values)], early_stopping_rounds=20)
y_pred = gbm.predict(test_X.values)
logger.info(f"Root Mean Squared Error on Test set: {np.sqrt(mean_squared_error(test_y, y_pred))}")
logger.info(f"R2 score on Test set: {r2_score(test_y, y_pred)}")
joblib.dump(gbm, './models/water_pred.joblib')
logger.info(f"save_path: ./models/water_pred.joblib")
if __name__ == '__main__':
data = pd.read_csv('./data/preprocessed_example.csv', index_col=0)
agg = time_series_to_supervised(data.values, data.columns, 24, 1)
train_model(agg)