风速发电预测(线性回归模型 、XGBoost模型 、决策树回归模型 、随机森林回归模型 、梯度提升回归模型与LSTM模型对比,多特征输入,单标签输出,可轻易替换为其它时序数据集)

1.前言

1.1.运行效果:风速发电预测(线性回归模型 、XGBoost模型 、决策树回归模型 、随机森林回归模型 、梯度提升回归模型与LSTM模型对比,多特征输入,单标签输出,可轻易替换_哔哩哔哩_bilibili

1.2.环境库:

如果库版本不一样, 一般也可以运行,这里展示我运行时候的库版本,是为了防止你万一在你的电脑上面运行不了,可以按照我的库版本进行安装并运行  

如果想查看自己本地目前库的版本,可以运行下面的代码

import tensorflow as tf
print("TensorFlow版本:", tf.__version__)
import numpy as np
import pandas as pd
import datetime as dt
import plotly
import matplotlib
print("NumPy版本:", np.__version__)
print("Pandas版本:", pd.__version__)
print("Plotly版本:", plotly.__version__)
print("Matplotlib版本:", matplotlib.__version__)
import xgboost
import sklearn
print("XGBoost版本:", xgboost.__version__)
print("sklearn版本:", sklearn.__version__)

2.数据集介绍

2022年美国某个风电场数据集(从1月1号中午12:00开始收集数据,截止时间为:12月31号下午11:00,每隔一个小时收集数据一次),一共8760行数据。

一共有6列数据:列名字为Time stamp(2022); System power generated | (kW) ;Wind speed | (m/s); Wind direction | (deg); Pressure | (atm) ;Air temperature | ('C);

对应的中文名字:时间戳("Time stamp");系统发电功率;风速;风向;气压;空气温度。

数据开始位置

数据截止位置

3.项目文件夹

data文件夹装载风力发电数据集

code.py是线性回归模型 、XGBoost模型 、决策树回归模型 、随机森林回归模型 、梯度提升回归模型 

LSTM.py是LSTM预测模型

version.py是查看自己本地目前库的版本

4.效果

4.1.五个传统机器学习模型(线性回归模型 、XGBoost模型 、决策树回归模型 、随机森林回归模型 、梯度提升回归模型)

一个样本的特征:风速;风向;气压;空气温度;样本对应的标签:系统发电功率。

训练集与测试集比例:4:1。也就是前6608行数据为训练集,后1652行是测试集。

线性回归模型

XGBoost模型 

 

决策树回归模型 

随机森林回归模型  

 

梯度提升回归模型 

 五个模型的训练集与测试集RMSE

测试集的MSE

 4.2.LSTM模型

因为前面五个传统机器学习模型效果已经不错了,所以这里LSTM采用另外一种特征情况 

一个样本的特征(黄色部分):系统发电功率前24个值;样本对应的标签(蓝色部分):第25个点的系统发电功率。

LSTM模型:测试集预测值和真实值

对项目感兴趣的,可以关注最后一行

import tensorflow as tf
print("TensorFlow版本:", tf.__version__)
import numpy as np
import pandas as pd
import datetime as dt
import plotly
import matplotlib
#数据集和代码:https://mbd.pub/o/bread/mbd-ZZealphy

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
短期风力发电预测可以使用各种机器学习算法进行建模和预测,其中常用的算法包括神经网络、支持向量机、随机森林等。下面是一个基于神经网络的短期风力发电预测的MATLAB代码示例: ```matlab % 读取历史数据 data = xlsread('wind_power_data.xlsx'); X = data(:, 1:end-1); Y = data(:, end); % 划分训练集和测试集 train_ratio = 0.8; train_size = round(train_ratio * size(X, 1)); train_X = X(1:train_size, :); train_Y = Y(1:train_size); test_X = X(train_size+1:end, :); test_Y = Y(train_size+1:end); % 神经网络建模 hidden_layer_size = 10; net = feedforwardnet(hidden_layer_size); net.trainFcn = 'trainlm'; % 使用Levenberg-Marquardt算法训练 net.trainParam.showWindow = false; % 不显示训练过程窗口 net.divideFcn = 'divideblock'; % 按块划分训练集和验证集 net.divideParam.trainRatio = 0.8; net.divideParam.valRatio = 0.2; net.divideParam.testRatio = 0; net.trainParam.epochs = 1000; net.trainParam.goal = 0.01; % 目标误差 net = train(net, train_X', train_Y'); % 预测并评估 train_pred_Y = net(train_X'); test_pred_Y = net(test_X'); train_rmse = sqrt(mean((train_pred_Y - train_Y').^2)); test_rmse = sqrt(mean((test_pred_Y - test_Y').^2)); % 绘制预测结果 figure; plot(1:length(train_Y), train_Y, 'b-', 1:length(train_Y), train_pred_Y, 'r-'); hold on; plot(length(train_Y)+1:length(Y), test_Y, 'b--', length(train_Y)+1:length(Y), test_pred_Y, 'r--'); legend('历史数据', '训练集预测', '测试集真实值', '测试集预测'); xlabel('时间'); ylabel('风力发电功率'); title(sprintf('RMSE: train=%.2f, test=%.2f', train_rmse, test_rmse)); ``` 这段代码会读取一个名为 `wind_power_data.xlsx` 的数据文件,该文件的第一列到倒数第二列是特征(如温度、湿度等),最后一列是风力发电功率。代码会将数据集划分为训练集和测试集,并使用Levenberg-Marquardt算法训练一个神经网络模型。最后,代码会输出训练集和测试集的预测结果,并计算出均方根误差(RMSE)用于评估模型性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

深度学习的奋斗者

你的鼓励是我努力的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值