python - LSTM时间序列预测——从低loss开始,准确率不变
问题描述
我正在尝试根据过去的值来预测网络流量。我建立了一个 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'])
正如你所看到的,我的损失从一个非常低的值开始,并且我的准确性随着时间的推移而保持不变。我究竟做错了什么?
提前致谢。:)
解决方案
- 尝试随机打乱数据。
- 当使用顺序数据时,最好使用 LSTM。尝试用 Dense 层替换 LSTM。或更改您的输入。您需要将一系列过去的值传递给 LSTM,以便它可以预测下一个值。所以,(1,1) 不是一个序列,LSTM 在这里没用。度量精度在这种情况下是没用的,尝试平均绝对误差之类的。
推荐阅读
- winforms - 当我设置单元格值时,WinForms DataGridView 清除 SelectedRows?
- javascript - 为什么单击链接时不执行Controller类中的deleteCustomer函数?
- git - 为什么在 git checkout -b $local_branch 基于 git checkout remotes/origin/remote_branch 之后可以看到正确的文件
- node.js - Heroku 崩溃错误:heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico"
- android - Android - 故意使网格视图项目垂直重叠
- python-3.x - “文档”中没有 Python 文件夹?
- firebase - 在颤动中将图像从图像选择器保存到firebase存储
- java - java.lang.NoClassDefFoundError:将 .docx 文档转换为 .pdf 时出现 org.apache.poi.POIXMLDocumentPart
- ssis - 运行不同版本的 Interop.Excel 的 sql server 上的 SSIS 作业
- javascript - ApplicationInsightsTelemetryClient 未记录机器人标识符