我正在使用Keras中的LSTM在数据集上使用15个先前样本进行一步预测。
可以在此处找到数据csv文件: (https://drive.google.com/file/d/0Byiipc0dArG0LVZJelB4NFBucms/view?usp=sharing)
使用第二列col [1]值。第一列中的值(时间戳)根本不使用。
我使用以下代码:
# convert an array of values into a dataset matrix
def create_dataset(dataset, look_back=1):
dataX, dataY = [], []
for i in range(len(dataset)-look_back-1):
a = dataset[i:(i+look_back), 0]
dataX.append(a)
dataY.append(dataset[i + look_back, 0])
return numpy.array(dataX), numpy.array(dataY)
# fix random seed for reproducibility
numpy.random.seed(7)
# load the dataset
dataframe = pandas.read_csv('node70-3000.csv', usecols=[1],
engine='python', skipfooter=3)
dataset = dataframe.values
dataset = dataset.astype('float32')
# normalize the dataset
scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(dataset)
# split into train and test sets
train_size = int(len(dataset) * 0.7)
test_size = len(dataset) - train_size
train, test = dataset[0:train_size,:],
dataset[train_size:len(dataset),:]
# reshape into X=t and Y=t+1
look_back = 15
trainX, trainY = create_dataset(train, look_back)
testX, testY = create_dataset(test, look_back)
# reshape input to be [samples, time steps, features]
trainX = numpy.reshape(trainX, (trainX.shape[0], trainX.shape[1], 1))
testX = numpy.reshape(testX, (testX.shape[0], testX.shape[1], 1))
# create and fit the LSTM network
batch_size = 11
model = Sequential()
model.add(LSTM(32, batch_input_shape=(batch_size, look_back, 1),
stateful=True))
#model.add(LSTM(32, stateful = True))
model.add(Dense(32))
model.add(Dense(1))
# default lr=0.001
optim = Adam(lr=0.05, beta_1=0.9, beta_2=0.999, epsilon=1e-08,
decay=0.1)
model.compile(loss='mean_squared_error', optimizer=optim)
for i in range(50):
model.fit(trainX, trainY, nb_epoch=1, batch_size=batch_size,
verbose=2, shuffle=False)
model.reset_states()
# make predictions
问题:
我已经使用此代码来预测更少的周期性和干净的时间序列,并且效果很好。然而,对于这组数据,我使用了不同的Adam参数(学习率等)。不过,我得到的预测与实际值有很大的偏差。似乎预测值总是接近数据值的平均值。请参见下图。我在csv文件中有1850个数据点。这些被分组为大小为15的序列。输入是大小为15的序列。输出应该是预测的下一个值。 70%的数据用于培训,其余的是测试数据集。在下图中分别以绿色和红色显示的列车和测试数据集进行预测。
(https://drive.google.com/file/d/0Byiipc0dArG0OEN5el9lc0puNGM/view?usp=sharing)
您是否知道为什么会发生这种情况以及可能导致这种情况发生的原因?
谢谢, Faezeh
答案 0 :(得分:0)