利用kares框架进行LSTM时间序列数据的预测

博客围绕一组一维的航班乘客数据展开,利用Keras框架搭建LSTM模型,目的是对下个月的航班乘客数据进行预测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一组这里插入图片描述
这是一组航班的乘客数据,是一维的数据,这里列出了一部分数据。使用kares框架来搭建LSTM模型进行预测下个月的数据。

import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
import  pandas as pd
import  os
from keras.models import Sequential, load_model
from sklearn.preprocessing import MinMaxScaler
import csv
#读取文件
def dataload(filename):
    X =[]
    with open(filename) as f:
        reader=csv.reader(f)
        header_row = next(reader)
        for line in reader:
            X.append(line[1:2])
    return X

filename = 'airline-passengers.csv'
X = dataload(filename)
#中心化处理。将数据压缩到0到1之间
scaler = MinMaxScaler(feature_range=(0,1))
X = scaler.fit_transform(X)
#将数据集的前70%作为训练集,后30%作为测试集
trian_x = X[:int(len(X) * 0.7)]
test_x = X[int(len(X) * 0.7):]

def load_data(dataset, stemp):
    X_train, Y_train = [],[]
    for i in range(len(dataset) - stemp - 1):
        temp = dataset[i:(i + stemp)]
        X_train.append(temp)
        Y_train.append(dataset[i+stemp])
    return np.array(X_train), np.array(Y_train)

stemp = 1
trainX, trainY = load_data(trian_x, stemp)
testX, testY = load_data(test_x, stemp)


model = Sequential()
model.add(LSTM(4, input_shape = (None, 1)))#LSTM的输入为 [samples, timesteps, features]
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, epochs=100, batch_size=1, verbose=2)

trainpre = model.predict(trainX)
testpre = model.predict(testX)
newtest = testX[41:42]
next = model.predict(newtest)

trainpre = scaler.inverse_transform(trainpre)
trainY = scaler.inverse_transform(trainY)
testpre = scaler.inverse_transform(testpre)
testY = scaler.inverse_transform(testY)
print('下一个月的预测数据是:' + str(scaler.inverse_transform(next)[0][0]))
plt.plot(trainY)
plt.plot(trainpre[1:])
plt.show()
plt.plot(testY)
plt.plot(testpre[1:])
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值