ICEEMDAN-Solar_power-forecast/iceemdan信号重构.ipynb

217 KiB
Raw Blame History

In [2]:
from math import sqrt
from numpy import concatenate
from matplotlib import pyplot
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import mean_squared_error
from tensorflow.keras import Sequential

from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import LSTM
from tensorflow.keras.layers import Dropout
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
C:\Users\asus\AppData\Roaming\Python\Python39\site-packages\pandas\core\computation\expressions.py:21: UserWarning: Pandas requires version '2.8.4' or newer of 'numexpr' (version '2.8.3' currently installed).
  from pandas.core.computation.check import NUMEXPR_INSTALLED
C:\Users\asus\AppData\Roaming\Python\Python39\site-packages\pandas\core\arrays\masked.py:60: UserWarning: Pandas requires version '1.3.6' or newer of 'bottleneck' (version '1.3.5' currently installed).
  from pandas.core import (
In [67]:
# 加载数据
path1 = r"D:\project\小论文1-基于ICEEMDAN分解的时序高维变化的短期光伏功率预测模型\CEEMAN-PosConv1dbiLSTM-LSTM\模型代码流程\完整的模型代码流程\9996低频_forecast.csv"#数据所在路径
#我的数据是excel表若是csv文件用pandas的read_csv()函数替换即可。
f_low= pd.DataFrame(pd.read_csv(path1))
In [68]:
# 加载数据
path2 = r"D:\project\小论文1-基于ICEEMDAN分解的时序高维变化的短期光伏功率预测模型\CEEMAN-PosConv1dbiLSTM-LSTM\模型代码流程\完整的模型代码流程\99939高频re_forecast.csv"#数据所在路径
#我的数据是excel表若是csv文件用pandas的read_csv()函数替换即可。
f_high= pd.DataFrame(pd.read_csv(path2))
In [69]:
path3= r"D:\project\小论文1-基于ICEEMDAN分解的时序高维变化的短期光伏功率预测模型\CEEMAN-PosConv1dbiLSTM-LSTM\模型代码流程\完整的模型代码流程\9996低频_test.csv"#数据所在路径
#我的数据是excel表若是csv文件用pandas的read_csv()函数替换即可。
true_low= pd.DataFrame(pd.read_csv(path3))
In [70]:
path4= r"D:\project\小论文1-基于ICEEMDAN分解的时序高维变化的短期光伏功率预测模型\CEEMAN-PosConv1dbiLSTM-LSTM\模型代码流程\完整的模型代码流程\99939高频re_test.csv"#数据所在路径
#我的数据是excel表若是csv文件用pandas的read_csv()函数替换即可。
true_high= pd.DataFrame(pd.read_csv(path4))
In [71]:
path5= r"D:\project\小论文1-基于ICEEMDAN分解的时序高维变化的短期光伏功率预测模型\CEEMAN-PosConv1dbiLSTM-LSTM\模型代码流程\完整的模型代码流程\test.csv"#数据所在路径
#我的数据是excel表若是csv文件用pandas的read_csv()函数替换即可。
true_2= pd.DataFrame(pd.read_csv(path5))
In [72]:
pre_data=f_low+f_high
pre_data
Out[72]:
column_name
0 4.607052
1 4.585928
2 4.574285
3 4.546298
4 4.497329
... ...
1557 0.022011
1558 0.020204
1559 0.019515
1560 0.022857
1561 0.018875

1562 rows × 1 columns

In [73]:
true=true_low+true_high
true
Out[73]:
column_name
0 4.679599e+00
1 4.675801e+00
2 4.636000e+00
3 4.572200e+00
4 4.525266e+00
... ...
1557 6.661338e-16
1558 0.000000e+00
1559 2.220446e-16
1560 2.220446e-16
1561 4.440892e-16

1562 rows × 1 columns

In [80]:
plt.figure(figsize=(16,8))
plt.plot(true, label='true')
plt.plot(pre_data, label='pre')
plt.legend()
plt.show()
No description has been provided for this image
In [82]:
plt.figure(figsize=(16,8))
plt.plot(true_2, label='true')
plt.plot(pre_data, label='pre')
plt.legend()
plt.show()
No description has been provided for this image

找论文 引用 峰值达不到 偏低 情况 通过分解之后 提高了 加在分析 结论 两个数据集篇幅一样 附录 图 未来数据引入 文章对比 3个亮点

In [83]:
from sklearn.metrics import mean_squared_error, mean_absolute_error  # 评价指标
# 使用sklearn调用衡量线性回归的MSE 、 RMSE、 MAE、r2
from math import sqrt
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
print('mean_squared_error:', mean_squared_error(pre_data, true))  # mse)
print("mean_absolute_error:", mean_absolute_error(pre_data, true))  # mae
print("rmse:", sqrt(mean_squared_error(pre_data, true)))
print("r2 score:", r2_score(pre_data[:], true[:]))#
mean_squared_error: 0.0020508589297795984
mean_absolute_error: 0.024749394165108834
rmse: 0.04528640998996938
r2 score: 0.9993959872891868
In [77]:
# 使用MinMaxScaler进行归一化
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler(feature_range=(0, 1))
pre = scaler.fit_transform(pre_data)
print(pre.shape)
(1562, 1)
In [78]:
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler(feature_range=(0, 1))
true_data = scaler.fit_transform(true)
print(true_data.shape)
(1562, 1)
In [79]:
from sklearn.metrics import mean_squared_error, mean_absolute_error  # 评价指标
# 使用sklearn调用衡量线性回归的MSE 、 RMSE、 MAE、r2
from math import sqrt
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
print('mean_squared_error:', mean_squared_error(pre, true_data))  # mse)
print("mean_absolute_error:", mean_absolute_error(pre, true_data))  # mae
print("rmse:", sqrt(mean_squared_error(pre, true_data)))
print("r2 score:", r2_score(pre_data, true_2))
mean_squared_error: 0.00010504255695631394
mean_absolute_error: 0.00643843807544528
rmse: 0.010249027122430398
r2 score: 0.9993959872891868
In [ ]:
 
In [ ]: