python滚动预报 学习笔记

现有的Python实现的是模型的训练。训练结束后,还要对未来的气候进行预测。根据实验室已有的经验,预测方法有一对多和一对一。这里我们首先学习一对一,也就是实现滚动预测。

对于n步预测模型,常见的模型通常采用滚动预测方法实现,即通过t时刻及之前的时刻数据预测得到t+1时刻的数据,然后将t+1时刻的数据作为已知量带入的模型中再次预测t+2时刻的数据,重复n步,得到n步预测结果。然而,模型的多次滚动会使预测误差产生累计效应,不利于高精度预测。因此,本章通过对每一步均建立一个独立模型,进而集成n个模型的预测结果,实现多步预测。

先不加气象因子实现径流滚动预测。

我直接改吧。边改边想思路。

    for k in range(0,len(x_trains)):
        print("########################第"+str(k)+"个分解模态############################")
           
        if models[k] is None:
            model = build_model(prediction_steps)
            try:

根据师兄的论文,他的方法是每预测一次,都训练一遍模型。我只预测接下来3个月的,所以多构建几个模型应该还行。

按照国际惯例,先把epochs=100设置成3,减少迭代次数。

文件名字先设置成:lstm-runoff-forecasting-3

我感觉我感觉就都只是训练集,不设置测试集就行了。

    # Split data into training and testing sets
    train_set_ratio = 0.8
    row = int(round(train_set_ratio * len(windowed_data)))

这个部分是用来划分训练集和测试集的。那么我觉得这里应该不能划分,直接给训练集。测试集是训练集预测的一个数据。

测试集是测试集的最后一个窗口数据再往后,把数据集的最后一个值给窗口,用训练好的模型来跑结果。

    row = int(len(windowed_data)-1)

这个画图只需要画出训练集的对比

我现在有的python代码,一个是气象因子+lstm。一个是vmd+lstm。

我觉得加上气象因子的话,预报也就要预报气象因子。还是有点麻烦的。

如果不加气象因子,得到的结果没有办法和师兄的结果相对照。所以还是加一下气象因子。

最后一个数据是只有x-test,没有y-test

    #用来预测的第一个数据

    prediction_datas_one = []
    prediction_datas_one = np.array(prediction_datas_one)
    prediction_datas_one = np.append(prediction_datas_one, cf[len(runoff)-7: len(runoff)-3])
    prediction_datas_one = np.append(prediction_datas_one,cf[len(runoff)-1: len(runoff)])
    prediction_datas_one = np.append(prediction_datas_one, nino[len(runoff)-6: len(runoff)-4])
    prediction_datas_one = np.append(prediction_datas_one, ido[len(runoff)-10: len(runoff)-8])
    prediction_datas_one = np.hstack((prediction_datas_one, runoff[len(runoff)-36:len(runoff)-35], runoff[len(runoff)-24:len(runoff)-21], runoff[len(runoff)-12: len(runoff)]))
    prediction_datas_one = np.array(prediction_datas_one)

手动设置预测的数据,那么下面就把所有数据都设置成训练集,我们这里不设置测试集???

不对,如果不设置测试集,你就不知道你的模型合不合适。这两个不能弄混,因为根据以前的结果,训练集的拟合程度优于测试集。

我现在想的是用来预测的第一个数据能不能变成一个函数。每次需要这个数据的数据的时候调用就行。因为我要预测未来一年的不能写十二个把,用来预测的第一个,用来预测的第二个。。。

np.reshape()方法,把下面一种数据格式变成另一种数据格式

    prediction_datas_one = np.reshape(prediction_datas_one, (len(prediction_datas_one), 1))

又一个瓶颈来了!反复出现这个错误。

是这个问题吗?不是

师兄点醒我了,这个报错提示的是维度不正确,期望3个维度,输入的却是2个维度。(所以一定要认真的看报错啊喂!)

python数组增加维度_Numpy 改变数组维度的几种方法小结

解决的方法参照了以上的博客

哈哈,成功解决!

epochs = 3

batch_size=1

这两个参数一改,预测的值都会变 所以到了观众们喜闻乐见的该参数环节··· 然而这个预测了以后怎么办呢?难道气象因子也都要预测,然后再重新预测嘛?

好了,对未来预测是项目需要的东西,就到这吧。下面想一想论文思路。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值