当前位置:   article > 正文

终于来了!python机器学习预测全家桶_小数据集做预测有什么好用的机器学习方式

小数据集做预测有什么好用的机器学习方式

关于机器学习预测的python代码,后台高呼声也是不断!今天,小淘总算是肝出来啦!

人生苦短,python是岸

不得不说,用python进行机器学习预测,确实要简便许多,很多包直接调用即可。

先上目录!

08644e7db3f485c013f1f22dee9109d1.png

本期推出的python机器学习预测全家桶一共包含了26种模型。包括如下:

单模型预测

Bagging、BiGRU、BiLSTM、BP、CART、ELM、Gradient-boosting、GRU、LSTM、Random-Forest、RBF、SVR、xgboost

组合模型预测

BiGRU-Attention、BiLSTM-Attention、CNN-BiGRU、CNN-BiGRU-Attention、CNN-BiLSTM、CNN-BiLSTM-Attention、CNN-GRU、CNN-GRU-Attention、CNN-LSTM、CNN-LSTM-Attention、GRU-Attention、LSTM-Attention

智能算法优化案例模型预测

DBO-LSTM-Attention

预计后续会继续推出:

1:各种基础、混合的可用于机器预测的新方法,并且与各种BiLSTM、Attention、GRU等的混合使用

2:各种新型的智能优化算法优化机器学习预测模型

3:将改进的智能算法用于机器学习模型的预测

4:添加其他类型的数据集用于预测

5:本期模型属于多变量输入单步预测,后续会加入多变量输入多步预测,单变量输入单步和多步预测

代码获取方式:

3c77db9a5c511dfd5c9e46479b675917.png

承诺该全家桶永久更新!


本次代码亮点:

①一键切换多/单特征输入,多/单步预测

小淘自己编写了一个可以一键实现:多/单特征输入,多/单步预测的数据处理代码。让小白也可以轻松更改自己数据的各种输入格式。关于多/单特征输入,多/单步预测,到底是什么意思?一文讲明白!

代码定义如下:

  1. def data_collation(data, n_in, n_out, or_dim, scroll_window, num_samples)
  2. # 关于此函数怎么用,下面详细举例介绍:
  3. # 构造数据,这个函数可以实现单输入单输出,单输入多输出,多输入单输出,和多输入多输出。
  4. # 举个例子:
  5. # 假如原始数据为,其中务必使得数据前n-1列都为特征,最后一列为输出
  6. # [0.74 0.8 0.23 750.75
  7. # 0.74 0.87 0.15 716.94
  8. # 0.74 0.87 0.15 712.77
  9. # 0.74 0.8 0.15 684.86
  10. # 0.74 0.8 0.15 728.79
  11. # 0.72 0.87 0.08 742.81
  12. # 0.71 0.99 0.16 751.3]
  13. #(多输入多输出为例),假如n_in = 2,n_out=2,scroll_window=1
  14. # 输入前2行数据的特征,预测未来2个时刻的数据,滑动步长为1。
  15. # 使用此函数后,数据会变成:
  16. # 【0.74 0.8 0.23 750.75 0.74 0.87 0.15 716.94 712.77 684.86
  17. # 0.74 0.87 0.15 716.94 0.74 0.87 0.15 712.77 684.86 728.79
  18. # 0.74 0.87 0.15 712.77 0.74 0.8 0.15 684.86 728.79 742.81】
  19. # 假如n_in = 2,n_out=1,scroll_window=2
  20. # 输入前2行数据的特征,预测未来1个时刻的数据,滑动步长为2。
  21. # 使用此函数后,数据会变成:
  22. # 【0.74 0.8 0.23 750.75 0.74 0.87 0.15 716.94 712.77
  23. # 0.74 0.87 0.15 712.77 0.74 0.8 0.15 684.86 728.79
  24. # 0.74 0.8 0.15 728.79 0.72 0.87 0.08 742.81 751.3】
  25. #写到这里相比大家已经完全明白次函数的用法啦!欢迎关注《淘个代码》公众号!获取更多代码!
  26. #单输入单输出,和单输入多输出也是这么个用法!单输入无非就是数据维度变低了而已。欢迎关注《淘个代码》公众号!获取更多代码

②四种数据集,预测效果都不错,证明数据替换简单!

很多小伙伴会问到,替换数据复不复杂。本期全家桶为了实现代码对不同数据的兼容性,小淘分别对这四种不同的数据集进行了测试,效果都是不错的!放心大胆使用!四种数据分别如下:

《电力负荷预测数据1.xlsx》

e1b5a46f3c420da425cf1d35ae50a0aa.png

以BiGRU为例,前三行数据作为输入,预测第四个数据。滚动步长为1,展示预测效果:

d8a62c3ffd8c492df15d5166657189e1.png

《电力负荷预测数据2.xlsx》

f1fa63fb104dc09ef6ea9ac827424c0c.png

以BiGRU为例,前三行数据作为输入,预测第四个数据。滚动步长为1,展示预测效果:

b84891c8574a272cdb9eed916c3b60cb.png

《风电场功率预测.xlsx》

3b434298081a792d666351cf25b5c25a.png

以BiGRU为例,前三行数据作为输入,预测第四个数据。滚动步长为1,展示预测效果:

54bc7873a3e4a2cacec6d9eaa0db6d2d.png

《股票预测.csv》

de76f06c0cf19ab224ae556e0a0b50f1.png

以BiGRU为例,前三行数据作为输入,预测第四个数据。滚动步长为1,展示预测效果:

e0882fc44d70ca940968c017cfee0bf8.png

四种数据全是真实的数据!

只要你的数据格式也是这样,前几列是特征,最后一列是输出值。此代码就完全适用!

③代码注释逐行详细,适合新手小白!

  1. # 这里来个多特征输入,单步预测的案例
  2. n_in = 3 # 输入前3行的数据
  3. n_out = 1 # 预测未来1个时刻的数据
  4. or_dim = values.shape[1] # 记录特征数据维度
  5. num_samples = 2000 # 可以设定从数据中取出多少个点用于本次网络的训练与测试。
  6. scroll_window = 1 #如果等于1,下一个数据从第二行开始取。如果等于2,下一个数据从第三行开始取
  7. res = data_collation(values, n_in, n_out, or_dim, scroll_window, num_samples)
  8. # 把数据集分为训练集和测试集
  9. values = np.array(res)
  10. # 将前面处理好的DataFrame(data)转换成numpy数组,方便后续的数据操作。
  11. n_train_number = int(num_samples * 0.85)
  12. # 计算训练集的大小。
  13. # 设置85%作为训练集
  14. # int(...) 确保得到的训练集大小是一个整数。
  15. model = BaggingRegressor(n_estimators=60)
  16. # 创建Bagging模型
  17. model.fit(vp_train, vt_train)
  18. # 使用训练数据(vp_train和vt_train)来训练模型。
  19. # vp_train是输入特征,vt_train是目标变量。
  20. # fit方法将会应用前面定义的网络结构和训练参数来训练模型。
  21. # 作出预测
  22. yhat = model.predict(vp_test)
  23. # 使用模型对测试集的输入特征(vp_test)进行预测。
  24. # yhat是模型预测的输出值。
  25. yhat = yhat.reshape(-1, 1)
  26. # 将预测值yhat重塑为二维数组,以便进行后续操作。

模型结果展示

以电力负荷预测数据1为例进行展示。模型输入为前三行的湿度、温度、风速、压强、降水量、能见度、水气压(e)、体感温度(AT)和负荷值数据。预测下一个时刻的负荷值。滚动步长为1。

Bagging模型:

11eacf959cd902e861705bc427038a0c.png

c9be8e803fb637a8c6ed0170095ed29e.png

BiLSTM-Attention模型:

bfcf05abc9bf1430efac5f17d5f188f8.png

11a515bb7824db53d6cb2e8b2a5453ff.png

CNN-BiLSTM-Attention模型:

35b189bb2c90bfae24a0e4c24d11e23d.png

0fa48a329784b095776f4b9b47e50cfd.png

DBO-LSTM-Attention对比模型

34abbf1566051b037701a54307a007ac.png

f432cabab66262e732e70fccae87cd0b.png

剩下的模型就不再一一展示了。模型均可一键出结果。替换数据也是极其方便!

模型调用的包大致如下,不用GPU也可以运行。作者使用的是python3.9版本。目前亲测3.12是不能用的哈。

  1. # 调用相关库
  2. import os # 导入os模块,用于操作系统功能,比如环境变量
  3. import math # 导入math模块,提供基本的数学功能
  4. import pandas as pd # 导入pandas模块,用于数据处理和分析
  5. import openpyxl
  6. from math import sqrt # 从math模块导入sqrt函数,用于计算平方根
  7. from numpy import concatenate # 从numpy模块导入concatenate函数,用于数组拼接
  8. import matplotlib.pyplot as plt # 导入matplotlib.pyplot模块,用于绘图
  9. import numpy as np # 导入numpy模块,用于数值计算
  10. import tensorflow as tf # 导入tensorflow模块,用于深度学习
  11. from sklearn.preprocessing import MinMaxScaler # 导入sklearn中的MinMaxScaler,用于特征缩放
  12. from sklearn.preprocessing import StandardScaler # 导入sklearn中的StandardScaler,用于特征标准化
  13. from sklearn.preprocessing import LabelEncoder # 导入sklearn中的LabelEncoder,用于标签编码
  14. from sklearn.metrics import mean_squared_error # 导入sklearn中的mean_squared_error,用于计算均方误差
  15. from tensorflow.keras.layers import * # 从tensorflow.keras.layers导入所有层,用于构建神经网络
  16. from tensorflow.keras.models import * # 从tensorflow.keras.models导入所有模型,用于构建和管理模型
  17. from sklearn.metrics import mean_squared_error, mean_absolute_error,r2_score # 导入额外的评估指标
  18. from pandas import DataFrame # 从pandas导入DataFrame,用于创建和操作数据表
  19. from pandas import concat # 从pandas导入concat函数,用于DataFrame的拼接
  20. import keras.backend as K # 导入keras的后端接口
  21. from scipy.io import savemat, loadmat # 从scipy.io导入savemat和loadmat,用于MATLAB文件的读写
  22. from sklearn.neural_network import MLPRegressor # 从sklearn.neural_network导入MLPRegressor,用于创建多层感知器回归模型
  23. from keras.callbacks import LearningRateScheduler # 从keras.callbacks导入LearningRateScheduler,用于调整学习率
  24. from tensorflow.keras import Input, Model, Sequential # 从tensorflow.keras导入Input, Model和Sequential,用于模型构建
  25. import mplcyberpunk
  26. from qbstyles import mpl_style
  27. import copy
  28. # 导入copy模块,用于对象的复制。
  29. import random
  30. # 导入random模块,用于生成随机数。
  31. from scipy.io import savemat, loadmat
  32. # 从scipy.io模块导入savemat和loadmat函数,用于读写MATLAB格式的文件。
  33. from numpy import concatenate
  34. # 从numpy模块导入concatenate函数,用于数组的连接。
  35. from matplotlib.pylab import mpl
  36. # 从matplotlib.pylab模块导入mpl,用于配置matplotlib的一些参数。

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/758437
推荐阅读
相关标签
  

闽ICP备14008679号