赞
踩
经调试发现,informer的预测并不存在这种问题(时间预测的悖论),请看第七点提到的。
2021-11 如何安装GPU版本的ML框架、而且是多版本共存的那种,两种方法
2021-11-10 群友提供实现随机种子的函数实现以及具体分析
2022更新 注释链接和代码以及说明、案例在文章底部
以Github上的源码为准!以Github上的源码为准!以Github上的源码为准!
要想得到好的模型效果,你要做的不只是拿数据套模型而已!套模型调参、修改模型之前你要的事情还有很多,这些事情几乎占用你整个项目的60%的时间!
这里请自行百度,百度讲的比较透彻,比如:
1.informer的项目结构:
以上主要看红色框框部分,一个框框相当于一个模块,从上到下依次的模块含义是:
注意,如果你还没创建好项目的先创建好项目,然后配置解释器,之后:
pip install -r requirements.txt
1.运行示例
配置好项目和安装好模块之后,先启动作者给出的数据文件看看是否能够启动:
作者给出的是这样的命令:
# ETTh1
python -u main_informer.py --model informer --data ETTh1 --attn prob --freq h
# ETTh2
python -u main_informer.py --model informer --data ETTh2 --attn prob --freq h
# ETTm1
python -u main_informer.py --model informer --data ETTm1 --attn prob --freq t
当然也可以这样就好(然后在代码文件中设置好数据和时间频率):
# ETTh1
python -u main_informer.py --model informer --data ETTh1
启动成功之后,可以去配置成自己所需要的自定义数据集。
2.跑通自定义数据集
将自定义数据序列数据集文件夹添加到data文件夹下之后,前往代码修改以下几个地方:
首先,你的自定义数据集的时间列的字段名称 要是“date”,当然也可以不是,但是那样的话需要去改一下dataframe代码的列名。
(1)main_informer里面:
parser.add_argument('--data', type=str, required=True, default='titick', help='data them')
parser.add_argument('--root_path', type=str, default='./data/titick/', help='数据文件的根路径(root path of the data file)')
parser.add_argument('--features', type=str, default='S',....)
parser.add_argument('--data_path', type=str, default='日均价.csv', help='data file')
# 想要获得最终预测的话这里应该设置为True;否则将是获得一个标准化的预测。
parser.add_argument('--inverse', action='store_true', help='逆标准化输出数据'
'inverse output data', default=True)
data_parser = {
'ETTh1':{'data':'ETTh1.csv','T':'OT','M':[7,7,7],'S':[1,1,1],'MS':[7,7,1]},
'ETTh2':{'data':'ETTh2.csv','T':'OT','M':[7,7,7],'S':[1,1,1],'MS':[7,7,1]},
'ETTm1':{'data':'ETTm1.csv','T':'OT','M':[7,7,7],'S':[1,1,1],'MS':[7,7,1]},
'ETTm2':{'data':'ETTm2.csv','T':'OT','M':[7,7,7],'S':[1,1,1],'MS':[7,7,1]},
'WTH':{'data':'WTH.csv','T':'WetBulbCelsius','M':[12,12,12],'S':[1,1,1],'MS':[12,12,1]},
'ECL':{'data':'ECL.csv','T':'MT_320','M':[321,321,321],'S':[1,1,1],'MS':[321,321,1]},
'Solar':{'data':'solar_AL.csv','T':'POWER_136','M':[137,137,137],'S':[1,1,1],'MS':[137,137,1]},
'titick':{'data':'日均价.csv','T':'price','M':[7,7,7],'S':[1,1,1],'MS':[7,7,1]},
}
(2)还有exp_informer文件的这里:
注意:
将随机打散数据的设置关掉将有助于你去调试模型,去观察张量维度变化。如下:
这种现实场景就是:假如要预测2021-12-10~2021-12-20号的数据,但是需要2021-11-05到2021-12-09号的数据作为输入X才能实现预测,但是现在还没到11-05,所以那部分X数据就是未来的、是未知的,这种情况下就无法预测,这个是现实问题。
详细请看我的这篇博客:
LSTM时间序列预测存在的问题–滑动窗口是一把双刃剑 | Python技能树征题
2021-10-11 14:10 更新:informer的预测本质
经调试发现,informer的预测并不存在这种问题(时间预测的悖论)。
仅为个人的数据集上的实验内容,每个数据集可能都不一样。有什么好的方法留言一起交流。
2022-06-26 代码分享,如果您觉得对您有帮助,欢迎您为仓库点个star
最后:据说SCINet论文和代码结果相对informer来说更好,可以去试试这个2021年的新模型。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。