lstm时间序列预测python,传入dataframe数据
时间: 2024-11-09 11:24:56 浏览: 16
一个基于LSTM时间序列预测Python程序(完善的注释及使用手册)
LSTM(Long Short-Term Memory)是一种递归神经网络结构,特别适合处理时间序列数据。在Python中,我们可以利用深度学习库如Keras或PyTorch来实现LSTM的时间序列预测。
首先,你需要安装必要的库,如pandas、numpy、matplotlib和keras(或torch,取决于你的选择)。假设你的DataFrame `df` 包含了时间序列数据,步骤如下:
1. 导入库并加载数据:
```python
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import LSTM, Dense
```
2. 数据预处理:
- 将DataFrame转换成数值数组,提取需要的特征和目标变量。
- 对数据进行归一化或标准化,确保输入值在相似范围内。
```python
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 np.array(dataX), np.array(dataY)
# 假设`df`有两列,一列是特征(feature),另一列是标签(target)
feature_column = df.columns[0] # 修改为你想要作为输入的特征列名
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(df[[feature_column]])
train_size = int(len(scaled_data) * 0.8)
test_size = len(scaled_data) - train_size
train_data, test_data = scaled_data[0:train_size, :], scaled_data[train_size:len(scaled_data), :]
look_back = 1 # 预测步长,例如一天的数据点作为一个观察期
X_train, y_train = create_dataset(train_data, look_back)
X_test, y_test = create_dataset(test_data, look_back)
```
3. 构建LSTM模型:
```python
model = Sequential()
model.add(LSTM(50, return_sequences=True, input_shape=(X_train.shape[1], 1)))
model.add(LSTM(50, return_sequences=False))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
```
4. 训练模型:
```python
model.fit(X_train, y_train, epochs=100, batch_size=1, verbose=2)
```
5. 进行预测:
```python
predictions = model.predict(X_test)
predictions = scaler.inverse_transform(predictions)
true_values = scaler.inverse_transform(y_test)
```
6. 结果评估:
可视化预测结果并与真实值对比,以及计算一些指标,如均方误差(MSE)或R²分数。
阅读全文