光伏发电量预测(Python代码,CNN结合LSTM,TensorFlow框架)

1.数据集(开始位置),数据集免费下载链接:https://download.csdn.net/download/qq_40840797/89051099

数据集一共8列,第一列是时间,特征列一共有6列:"WindSpeed" - 风速 "Sunshine" - 日照时数 "AirPressure" - 大气压力 "Radiation" - 辐射 "AirTemperature" - 空气温度 "RelativeAirHumidity" - 相对空气湿度。被预测列为最后一列:光伏发电量

数据采集每间隔一个小时,开始时间是2017.1.1号凌晨

数据截止时间:2017年12月31号23:00

预测(训练集和测试集比例:4:1)

黄色部分是一个样本的输入,红色部分为该样本预测输出

测试集预测结果

指标(归一化后的数据进行衡量指标):

 测试集上的MAE/MSE:
MAE: 0.010868210556556764
MSE: 0.0014309633127727228 

衡量指标代码

from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
from math import sqrt
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score


# 输出模型性能指标
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test,  y_pred)

print('测试集上的MAE/MSE:')
print('MAE:', mae)
print('MSE:', mse)
#代码和数据集压缩包:https://mbd.pub/o/bread/mbd-ZZ2alZhu

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是一个简单的基于 LSTM光伏发电量预测模型代码示例: ```python import pandas as pd import numpy as np from keras.models import Sequential from keras.layers import LSTM, Dense from sklearn.preprocessing import MinMaxScaler # 读取数据 data = pd.read_csv('solar.csv') data = data.dropna() data = data.iloc[:, 1:2].values # 数据归一化 scaler = MinMaxScaler() data = scaler.fit_transform(data) # 创建训练集和测试集 train_size = int(len(data) * 0.67) test_size = len(data) - train_size train, test = data[0:train_size, :], data[train_size:len(data), :] # 将时间序列数据转换为监督学习数据 def create_dataset(dataset, look_back=1): X, Y = [], [] for i in range(len(dataset)-look_back-1): a = dataset[i:(i+look_back), 0] X.append(a) Y.append(dataset[i + look_back, 0]) return np.array(X), np.array(Y) look_back = 7 X_train, Y_train = create_dataset(train, look_back) X_test, Y_test = create_dataset(test, look_back) # 调整输入数据形状 X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1)) X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1)) # 构建 LSTM 模型 model = Sequential() model.add(LSTM(50, input_shape=(look_back, 1))) model.add(Dense(1)) model.compile(loss='mean_squared_error', optimizer='adam') # 训练模型 model.fit(X_train, Y_train, epochs=100, batch_size=1, verbose=2) # 预测 train_predict = model.predict(X_train) test_predict = model.predict(X_test) # 反归一化 train_predict = scaler.inverse_transform(train_predict) Y_train = scaler.inverse_transform([Y_train]) test_predict = scaler.inverse_transform(test_predict) Y_test = scaler.inverse_transform([Y_test]) # 评估模型 train_score = np.sqrt(mean_squared_error(Y_train[0], train_predict[:,0])) test_score = np.sqrt(mean_squared_error(Y_test[0], test_predict[:,0])) print('Train Score: %.2f RMSE' % (train_score)) print('Test Score: %.2f RMSE' % (test_score)) ``` 这个示例代码包括以下步骤: 1. 读取数据,并进行数据清洗和归一化。 2. 将数据分成训练集和测试集。 3. 将时间序列数据转换为监督学习数据。 4. 构建 LSTM 模型。 5. 训练模型。 6. 预测模型。 7. 反归一化预测结果。 8. 评估模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度学习的奋斗者

你的鼓励是我努力的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值