五花八门的机器学习预测?一篇搞定不行吗?

网络上看到很多机器学习预测的代码,各种各样的排列组合,什么TCN,CNN,LSTM,BILSTM,GRU,BiGRU,Attention机制,然后又是什么CNN-LSTM,CNN-BILSTM,CNN-BiGRU……等等等等。

今天作者要推出一个机器学习预测全家桶。

6552919d36357d9b8b607a2ed2eaa707.png

具体包含以下:

单模型预测

BiGRU,BiLSTM,CNN,GRU,LSSVM,LSTM,多元回归函数regress,TCN,SVM

组合模型预测

CNN-BiGRU,CNN-BiGRU-ATTENTION,CNN-BiLSTM,CNN-BiLSTM-ATTENTION,CNN-GRU,CNN-LSSVM,CNN-LSTM,CNN-SVM。

以及结合VMD的几个代码:VMD-CNNBiLSTM,VMD-CNNGRU,VMD-CNNLSTM。其实当你学会了其中一个,其他的照虎画猫也就都出来了。

代码获取方式放在文末了哈!

以上只是比较常用的几个,后续大家有需要的直接后台留言,我会继续在这个全家桶里边更新!

承诺该全家桶永久更新!

后续考虑继续将上述模型全部变为多步预测模型,以及会添加比较传统的各种神经网络(BP,RBF,PNN,KNN等等),极限学习机,随机森林等等方法。


数据准备

数据集统一采用新疆某地风电发电功率数据。

数据包含特征如下:测风塔10m风速(m/s) 、测风塔30m风速(m/s) 、测风塔50m风速(m/s) 、测风塔70m风速(m/s)、 轮毂高度风速(m/s) 、测风塔10m风向(°) 、测风塔30m风向(°) 、测风塔50m风向(°) 、测风塔70m风向(°)、 轮毂高度风向(°) 、温度(°) 、气压(hPa)、 湿度(%) 实际发电功率(mw)。部分数据截图如下:

4293405d938105bd7bbda6536271dc94.png

选取3月份数据,每个样本组成为:延时步长为10,跨时间步长为1。也就是采用前10个样本的所有特征,去预测下一个样本的发电功率。

以表格中数据为例,以2019年1月1日0点~2019年1月1日2点的所有数据(包括功率)组合起来放一块并变成一行,然后把2点15的数据也组合到这一行,这就形成了第一个样本。最后一列是2点15的功率。就这样以此类推,得到好多好多样本。然后划分训练集和测试集就ok了。

结果展示

每种方法的精度不一致,与自身的参数有关。对于这个风电数据来说,每个方法的效果都差不多。

一般去调整,“隐含层节点个数,学习率,训练次数,正则化参数”。调整这几个参数,就完全够用了。现在结合一些智能优化算法优化这些机器学习预测的,也无非就是调整一下这几个参数而已。

这里的参数,作者只是调了个大概,不至于很差。对于精度差的,并不代表这个方法就不好!大家可以调整参数已达到更好的效果!

分为单个模型预测,和组合模型预测进行介绍:

每个模型跑完之后,都会有一个训练集效果对比图,一个预测集效果对比图,和一个误差曲线图,并在命令窗口打印5种指标。

由于篇幅原因,只放前三个方法的预测结果图了,其他的模型都只放指标。

单个模型预测结果:

BiGRU:

77963150286f30898e7d1ef1b7f9a896.png

4ba44961ee1432a8131651cece0eead5.png

e53fc709c54cc8217fad65e9aa2c4112.png

66ebe1757042d946dfd5e7ad38321f44.png

CNN:

8d8252b490274eda2687798c2dff5bb8.png

464791aa46a552aa325f8f18ba5b1302.png

5ef9876c1bc44644d099d5ac5bcc4535.png

99084aafd13652676ede5f84fcfe871a.png


BiLSTM:

614cfee9eb718e3ed15a43ce79fe5b47.png

e2be8e3748c02c493dad2814375b5fe7.png

dbe227b3ba16c1edf6ef60fb26ee42cb.png

c533cc3729f653fd1b5caeeeff1c24f0.png


GRU:

57fca5688b49a1665dbff15f610bd68e.png


LSSVM:

a6854f88e85e32ec669483dd8c39d1ce.png


LSTM:

694cf22fd8b629fb1931e9a0b2ed0a4e.png


SVM:

a7d6253e9f842ad2feb67535c55db7fb.png


TCN:

26ddb6b654404f7854f94ecda6f6ffdd.png


多元函数回归:REGRESS

22a07e3dc55782721cf0a75e0a4fdc46.png


组合模型预测:

CNN-BiGRU

59dc905e98b0559eb2266eaacd852174.png


CNN-BiGRU-ATTENTION

32fee67bb964f620240df85bb153f5e8.png


CNN-BiLSTM:

faf70a92e6fac3e2d8267ae80c20dc49.png


CNN-BiLSTM-ATTENTION

34a10884c19ee6593e63b08b29730a8b.png


CNNGRU:

c620cc0d771b9bf503dd8efb4e934313.png


CNN-LSSVM:

5afe84569b318f22ae10fc1e56713d38.png


CNN-LSTM

d87d824024c2dc973b7fbab70e8d145b.png


cnn-svm:

f50dc1bbb6e1112c14516e091ef33a36.png


VMD-CNN-BiLSTM:

这里简单聊一下这个VMD-CNN-BILSTM,其实就是将数据的最后一列,功率那一列,提前进行了VMD分解,变成了K个IMF分量,然后分别用这k个IMF分量构建K个预测模型,然后将k个结果相加,就是最终的预测值。

4eae8c718f82b809522937f512f9771f.png

VMD组合模型还包含了VMD的分解图,频谱图,包络谱绘制等:

456e7aff58ccbde7a0ce62354546cc4b.png

be25823c63a06c994df7ccd52eeeb8a9.png

348b227143591db05a091b17291e236f.png

6f6e85125425e7c1283d721155b53495.png


VMD-CNN-GRU:

6eef05074240778dc4c2865e3ee5a599.png


VMD-CNN-LSTM:

6edd88a4630bfae9b2d3af73a13f29cc.png


最后考虑到大家可能会做算法对比,代码随机选取了四个模型的测试结果进行对比,对比结果图如下:

1ed56ecc8e338c2b74c17647f53694dd.png

80a040a8cac91f2021b7b3c6698c0c17.png

c870f88aa3c3c12af1ea0d8ee5aa7c25.png

09afc616752b53722335d35db7273d2c.png

以上所有图片,代码均可实现!

注意,此代码包含了自注意力机制(selfAttentionLayer),该函数只有2023及以上版本的matlab才有,因此请小伙伴自行下载2023版本的matlab,下载链接一并打包在代码中了。


点击下方卡片获取更多代码!

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

今天吃饺子

不想刀我的可以选择爱我

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

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

打赏作者

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

抵扣说明:

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

余额充值