【笔记】【LSTM算法】简单的时序预测

数据介绍

        数据是是一个单列数据,只保留六个数据作为测试集,采用单步预测,一个预测一个,数据集部分如下所示

data1=pd.read_csv('Dinghang.csv', usecols=[1])   #读取第二列数据
dataset = data1.values
dataset = dataset.astype('float32')

 LSTM模型介绍

LSTM的介绍

#数据标准化
scaler=sklearn.preprocessing.MinMaxScaler(feature_range=(0,1))        #将数据缩放至(0,1),以供使用
scaler_data=scaler.fit_transform(dataset)

 比较拉跨的分隔数据

#划分数据集,多少作为训练集,所少作为测试集

train=scaler_data[0:138]      #训练集
test=scaler_data[138:144]       #测试集
print(len(train),len(test))

分隔好数据后要对数据进行构造,使其能够在模型中使用

f creat_data(data):              #将数据构造成两列
    dataX=[]
    dataY=[]
    for i in range(len(data)-2):   #这里的look_step是1,预测一步,再减一是为了避免出现bug
        a=data[i:i+1,0]
        dataX.append(a)
        dataY.append(data[i+1,0])
    return np.array(dataX),np.array(dataY)

trainX,trainY=creat_data(train)            
testX,testY=creat_data(test)

trainX,testX是大矩阵中套了好多小矩阵 

一般情况下构造的数据为[测试样本,时间步长,预测],[sample,times_step,features]

即训练的样本,look_steps,滑动窗口的大小,要预测的数据个数

trainX = np.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))
testX = np.reshape(testX, (testX.shape[0], 1, testX.shape[1]))
model=Sequential()
model.add(LSTM(4, input_shape=(1, 1)))        #input_shape(time_step,预测个数)
model.add(Dense(1))              
model.compile(loss='MAE', optimizer='adam')     #使用MAE评价,优化算法
model.fit(trainX, trainY, epochs=100, batch_size=1, verbose=0)   #batch_size定义每次训练的批量数(整数型),verbose=2为每个epoch输出一行记录

#对数据预测
trainPredict = model.predict(trainX)
testPredict = model.predict(testX)

 对数据进行反向归一化处理,并以mae作为评价指标,评估预测模型。

#反转预测
trainPredict = scaler.inverse_transform(trainPredict)      #将标准化的数据转换为原始的数据
#trainY = scaler.inverse_transform([trainY])
testPredict = scaler.inverse_transform(testPredict)

testY = scaler.inverse_transform([testY])
testScore=mean_absolute_error(testY[0], testPredict[:,0])
# mae_test=np.sum(np.absolute(testPredict-testY))/4
print(testScore)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值