我正在尝试根据过去的值预测网络流量。我建立了一个LSTM网络,并尝试了几个参数,但是最终总是得到同样低的精度(0.108)。
scaler = MinMaxScaler(feature_range = (0, 1))
dataset = scaler.fit_transform(dataset)
train_size = int(len(dataset) * 0.67)
test_size = len(dataset) - train_size
train, test = dataset[0:train_size,:], dataset[train_size:len(dataset),:]
print(len(train), len(test))
def create_dataset(dataset, window_size = 1):
data_X, data_Y = [], []
for i in range(len(dataset) - window_size - 1):
a = dataset[i:(i + window_size), 0]
data_X.append(a)
data_Y.append(dataset[i + window_size, 0])
return(np.array(data_X), np.array(data_Y))
window_size = 1
train_X, train_Y = create_dataset(train, window_size)
test_X, test_Y = create_dataset(test, window_size)
print("Original training data shape:")
print(train_X.shape)
# Reshape the input data into appropriate form for Keras.
train_X = np.reshape(train_X, (train_X.shape[0], 1, train_X.shape[1]))
test_X = np.reshape(test_X, (test_X.shape[0], 1, test_X.shape[1]))
model = Sequential()
model.add(LSTM(4, input_shape = (1, window_size)))
model.add(Dense(1))
opt = optimizers.SGD(lr=0.01, momentum=0.9)
model.compile(loss = "mean_squared_error", optimizer = opt, metrics = ['accuracy'])
如您所见,我的损失从相当低的值开始,并且我的准确性随着时间的推移而保持不变。我在做什么错了?
先谢谢了。 :)
答案 0 :(得分:0)
如果(13942, 1, 1)
是您的整个数据集,那么它对于深度学习来说太小了;您最好使用“浅”方法,例如支持向量机(SVM)。或者,考虑我的答案here。
编辑:我刚刚注意到您使用了accuracy
指标;回归的准确性是不确定的-我很惊讶没有抛出错误。如果它使用prediction==true
来计算精度,那么您很幸运,您的精度不为0。基于损失,您的模型似乎运行得很好;要仔细检查,请绘制predictions
与true
并进行比较。 (通常,mse < .3
很好,mse < .1
很好)
答案 1 :(得分:0)