机器学习预测全家桶-Python,一次性搞定多/单特征输入,多/单步预测!

后台有小伙伴不断留言,有要求多特征输入,还有要求单步预测,这个又要求多步预测,那个的数据又是只有一列的,要求单输入的。

咱就是说,不能一次搞定吗!?

本期推文就彻底把这个问题解决掉!不论你的数据是只有一列,还是有多列特征,不论你是想多步预测,还是想单步预测。本次代码直接一步到位!

本次代码是基于上一期python机器学习预测全家桶的改进版本!

在上一期的基础上,新增多/单特征输入,多/单步预测功能。

下面简单说一下代码设计原理。

以《风电场功率预测.xlsx》为例进行介绍。数据格式如下:

9369173bd3238821e493b8234fd97df6.png

可以看到,数据的第一列为时间列,训练网络时用不到。读取数据代码如下:

dataset=pd.read_excel("风电场功率预测.xlsx")
values = dataset.values[:,1:] #取第2列之后(包含第二列)的所有数据,写成[:,1:]。 如果只取第2列数据,要写成[:,1:2];只取第3列数据,要写成[:,2:3]

小淘自己独创的数据整理函数定义如下:

def data_collation(data, n_in, n_out, or_dim, scroll_window, num_samples):
关于此函数用法:
# 构造数据,这个函数可以实现单输入单输出,单输入多输出,多输入单输出,和多输入多输出。
# 举个例子:
# 假如原始数据为,其中务必使得数据前n-1列都为特征,最后一列为输出
# [0.74  0.8  0.23 750.75
# 0.74 0.87 0.15 716.94
# 0.74 0.87 0.15 712.77
# 0.74 0.8 0.15 684.86
# 0.74 0.8 0.15 728.79
# 0.72 0.87 0.08 742.81
# 0.71 0.99 0.16 751.3]


#(多输入多输出为例),假如n_in = 2,n_out=2,scroll_window=1
# 输入前2行数据的特征,预测未来2个时刻的数据,滑动窗口为1。
# 使用此函数后,数据会变成:
# 【0.74 0.8 0.23 750.75  0.74  0.87 0.15 716.94 712.77 684.86
# 0.74 0.87 0.15 716.94 0.74 0.87  0.15 712.77  684.86 728.79
# 0.74 0.87 0.15 712.77 0.74 0.8 0.15 684.86 728.79 742.81】


# 假如n_in = 2,n_out=1,scroll_window=2
# 输入前2行数据的特征,预测未来1个时刻的数据,滑动步长为2。
# 使用此函数后,数据会变成:
# 【0.74 0.8 0.23 750.75  0.74  0.87 0.15 716.94 712.77
# 0.74 0.87  0.15 712.77  0.74 0.8 0.15 684.86 728.79
# 0.74 0.8 0.15 728.79 0.72  0.87 0.08 742.81 751.3】

重点来了!如果你是以下的某一种情况,只需要按照如下设置即可!

单输入单步预测,就让values等于某一列数据,设置n_out = 1,n_in, num_samples, scroll_window 根据自己情况来
单输入多步预测,就让values等于某一列数据,设置n_out = 步数,n_in, num_samples, scroll_window 根据自己情况来
多输入单步预测,就让values等于多列数据,设置n_out = 1,n_in, num_samples, scroll_window 根据自己情况来
多输入多步预测,就让values等于多列数据,设置n_out = 步数,n_in, num_samples, scroll_window 根据自己情况来

接下来以XGBOOST模型为例,进行四种案例的展示。

①单输入单步预测

只取《风电场功率预测.xlsx》数据中的温度一列,参数设置为,

values = dataset.values[:,11:12]  
n_out = 1  #预测未来1步
n_in = 5  #前5行数据作为输入
num_samples = 1000   #取1000个样本
scroll_window = 1 #如果等于1,下一个数据从第二行开始取。如果等于2,下一个数据从第三行开始取

其他地方代码都不用动!结果如下:

5eb86bdb5b0b088a190d529b262a70d7.png

在控制台打印指标结果如下:

475506a1fe37ae17c191dd8fb5b10672.png

②单输入多步预测

只取《风电场功率预测.xlsx》数据中的温度一列,参数设置为:

n_out = 2   #预测未来2步
n_in = 5    #前5行数据作为输入
num_samples = 1000  #取1000个样本
scroll_window = 1 #如果等于1,下一个数据从第二行开始取。如果等于2,下一个数据从第三行开始取

其他地方代码都不用动!结果如下:会生成2张图片。第一张代表所有测试集对于第一步预测值和实际值的对比结果。第二张代表所有测试集对于第二步预测值和实际值的对比结果。

abe2d2bbc11d2961cc15fad027ff4337.png

92d13272363e94f44fcb93a6f6df3db9.png

在控制台打印指标结果如下:

141b01cebef1b320b11740e1e92ad97b.png

③多输入单步预测

取《电力负荷预测数据.xlsx》所有数据,参数设置为:

n_out = 1   #预测未来1步
n_in = 5  #前5行数据作为输入
num_samples = 1000, #取1000个样本
scroll_window = 1  #如果等于1,下一个数据从第二行开始取。如果等于2,下一个数据从第三行开始取

其他地方代码都不用动!结果如下:

641bd2949cdfe310e4a573d8a815d114.png

在控制台打印指标结果如下:

408f367a173787443fe59661a7cb711e.png

④多输入多步预测

取《电力负荷预测数据.xlsx》所有数据,参数设置为:

n_out = 2   #预测未来2步
n_in = 5  #前5行数据作为输入
num_samples = 1000, #取1000个样本
scroll_window = 1  #如果等于1,下一个数据从第二行开始取。如果等于2,下一个数据从第三行开始取

其他地方代码都不用动!结果如下,会生成2张图片。第一张代表所有测试集对于第一步预测值和实际值的对比结果。第二张代表所有测试集对于第二步预测值和实际值的对比结果。

de0c8c499ee8f43a92883a89b6c3191c.png

6d8bec6b775c399c34696f20ade83140.png

在控制台打印指标结果如下:

b36cc87d0eb4372b3c3c4005398c6fbf.png

人生苦短,python是岸

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

全家桶目录如下:

22de5c732349ae1ac7b44e1c50ebed94.png

关于更多pytho机器学习预测全家桶介绍请看:终于来了!python机器学习预测全家桶

模型亲测python3.9版本可用。用到的包版本推荐如下:

pandas~=2.2.0
matplotlib~=3.8.2
numpy~=1.26.3
tensorflow~=2.15.0
keras~=2.15.0
seaborn~=0.13.1
scikit-learn~=1.4.0
scipy~=1.12.0
openpyxl~=3.1.2
mplcyberpunk~=0.7.1
qbstyles~=0.1.4
prettytable~=3.9.0
xgboost~=2.0.3

或点击下方卡片获取此全家桶。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

淘个代码_

不想刀我的可以选择爱我

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

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

打赏作者

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

抵扣说明:

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

余额充值