LSTM模型预测多变量二维数据代码实例
时间: 2023-09-10 14:06:49 浏览: 107
以下是一个使用LSTM模型预测多变量二维数据的代码实例:
```python
import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import LSTM, Dense
# 生成随机数据
data = np.random.randn(1000, 2)
df = pd.DataFrame(data, columns=['x1', 'x2'])
# 添加目标列
df['y'] = df['x1'] + df['x2']
# 划分训练集和测试集
train_size = int(len(df) * 0.7)
train = df[:train_size]
test = df[train_size:]
# 创建函数生成LSTM输入格式
def create_lstm_input(df, window_size):
X, y = [], []
for i in range(len(df)-window_size):
X.append(df.iloc[i:i+window_size, :].values)
y.append(df.iloc[i+window_size, -1])
return np.array(X), np.array(y)
# 定义LSTM参数
window_size = 10
hidden_size = 8
# 创建LSTM模型
model = Sequential()
model.add(LSTM(hidden_size, input_shape=(window_size, 2)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
# 生成训练数据
X_train, y_train = create_lstm_input(train, window_size)
X_test, y_test = create_lstm_input(test, window_size)
# 训练模型
model.fit(X_train, y_train, epochs=50, batch_size=16)
# 预测测试集
y_pred = model.predict(X_test)
# 计算均方误差
mse = np.mean((y_pred - y_test)**2)
print('均方误差:', mse)
```
在这个示例中,我们生成了一个随机的二维数据集,并在其中添加了一个目标列,该列是x1和x2的和。我们使用了一个带有8个隐藏节点的LSTM模型来预测目标列,并使用均方误差度量预测性能。
阅读全文