时间序列模型用于哪种预测,时间序列预测模型实验报告
转载来源: https://珠兰。智惠106 . com/p/290683144
这个数据是1949年到1960年12年间,每年12个月航班的乘客数据,共有144个数据,单位为1000个。用它进行了长短期记忆网络时间序列预测的实验。
数据如图所示
第一列是时间第二列是数据
创建代码头
importnumpimportmatplotlib。pyplotaspltfromkeras。模型从keras导出。layersimportdensefromkeras。层导入dimportosfromkeras。模型输入序列,负载_模型加载数据
在此,将时间序列数据的前65%作为训练数据的后35%作为测试数据
数据帧=PD.read _ CSV(./国际-航空公司-乘客. CSV(,usecols=[1],engine=python ),skip footer=3)dataset=数据框。价值观#有关将整数转换为float dataset=dataset.as类型( float 32 ) #规范化,以下步骤说明scaler=minmaxscaace)dataset=scaler。fit _ transform(数据集)train _ size=int(len(数据集)* 0
为了LTM进行预测,时间序列数据需要预测从前一个时间步长步骤开始之后的数据
假设你给它一个数据集
{
甲、乙、丙-丁
b、c、D-E
中、英、法、东
d、e、F-G
英、法、俄、西
}
在这种情况下,时间步长根据3,即前3个数据来预测下一个数据的值
需要转换数据
举个简单的例子,假设目录为[1、2、3、4、5],时间步长=2
我们转换后要达到的效果是
火车_火车_Y
即,根据前两个值预测下一个值
将数据正规化
长短期记忆网络可以不执行规范化操作,但这样会减缓训练模型失败的下降。如果本教程没有规范化,则在100次迭代后失败仍然很高
#上的代码片段解释了scaler=minmax scaler(feature _ range=(0,1))dataset=scaler。拟合_变换)处理数据
efcreate_dataset(dataset,look_back ) :#)这里的回望与时间步长相同的dataX,dataY=[],[]for iinrange(len(dataset(-look _ back-1):a=dataset)I:)Ilook _ back)]dataX。追加数字。数组)数据)训练数据太少,回头看看太大,无法达到look_back=1trainX,trainy=create_dataser)
输入长短期记忆网络为[样本、时间步长、特征]
这里的时间步长是步数,功能是维,我们在这里的数据是一维的
trainx=numpy . shape(trainx,(trainX.shape[0],trainX.shape[1],1))testx=numpy。reshape))testx 1)# createandithelstmnewolmodel=sequential()模型。add)lstm(4,input_shape=) none,1)模型。add()optimizer= Adam )模型。适合verbose=2)模型。保存(操作系统。路径。join( data , Test H5 )# make preve
# model=load _ model(OS路径。加入(数据,测试 H5 )(训练预测=模型)。预测(trainx)测试预测=模型。预测)testx)#逆归一化trainpredict=scainpredict))表示trainy=scaler。逆变换测试预测=scaler.inverse _ transe
PLT。绘图(训练)绘图。plot)训练预测[1:](PLT。show))PLT。PLT(测试)PLT。剧情)测试预测【1334】
参考资料
使用长短期记忆网络的时间序列预测的一个小例子
克拉斯中文文档-序列模型