我正在尝试编写一个简单的例子来理解LSTM是如何工作的。我想用一个简单的整数序列1,2,3,4,5,6,7,8,9,10来预测下一个数字。我有一个代码,但我不知道fit方法的第二个参数是什么。
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
import numpy as np
from keras.models import Sequential
from keras.layers import LSTM
df = pd.DataFrame(columns = ['Serie'])
for i in range(0, 10):
df.loc[i, 'Serie'] = i
sc = MinMaxScaler(feature_range = (0, 1))
train_set = sc.fit_transform(df.iloc[:, [True]])
xTrain = []
for i in range(0, len(train_set) - 3):
xTrain.append(train_set[i:i + 3, 0])
xTrain = np.array(xTrain)
xTrain = np.reshape(xTrain, (xTrain.shape[0], xTrain.shape[1], 1))
regresor = Sequential()
regresor.add(LSTM(units = 1, input_shape = (3, 1)))
regresor.compile(optimizer = 'rmsprop', loss = 'mse')
regresor.fit(xTrain, ???, batch_size = 1)
有人能给我一个非常简单的例子吗?给予。
2条答案
按热度按时间ibrsph3r1#
您需要将问题设置为受监督的问题。每个样本都包含自变量
x
和因变量y
。根据您的问题,x
包含3个时间步和1个特征的样本。首先执行必要的导入:让我们定义一些常量:
一个序列生成器从0…三十:
这里我们开始将问题设置为有监督的问题,
x
作为一个数字序列,y
作为下一个数字序列:将
x
和y
放在一起进行扩展:让我们定义模型的输入和输出:
模型定义和编译。我决定让模型架构更健壮一点,以获得“更好”的性能(参见下面的结果):
训练模型:regresor.fit(x_train,y_train,batch_size = 2,epochs = 500,verbose = 1)
一些预测:y_hats = regresor.predict(x_train)
结果;
正如您所看到的,预测值非常接近真实的值。
结果图:
请注意,为了简单起见,我对训练数据集进行了预测,测试应该在测试数据上进行。为此,您将不得不生成更多的点,并相应地分割它们(70%的训练,30%的测试)。此外,您可以通过调用缩放器的
inverse_transform
方法来获取原始范围中的值。rvpgvaaj2#
我会给你给予一些线索,你可以调整你的程序在星期五的结果是11,30,45,52,56和MB是20。怎么算20跟