RNN 时间序列预测代码
时间: 2023-11-12 13:47:30 浏览: 87
以下是一个基于RNN的时间序列预测代码。这个代码使用Keras和Tensorflow来实现。
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense, Dropout, LSTM
# 加载数据
data = pd.read_csv('data.csv')
data = data.dropna()
# 准备数据
sequence_length = 50
data_dim = 1
data = data['Close'].values.reshape(-1,1)
data = data.astype('float32')
train_size = int(len(data) * 0.7)
train_data = data[:train_size]
test_data = data[train_size:]
def create_dataset(dataset, sequence_length):
X_data, Y_data = [], []
for i in range(len(dataset)-sequence_length):
X_data.append(dataset[i:i+sequence_length])
Y_data.append(dataset[i+sequence_length])
return np.array(X_data), np.array(Y_data)
train_X, train_Y = create_dataset(train_data, sequence_length)
test_X, test_Y = create_dataset(test_data, sequence_length)
# 构建模型
model = Sequential()
model.add(LSTM(64, input_shape=(sequence_length, data_dim), return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(32))
model.add(Dropout(0.2))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
# 训练模型
model.fit(train_X, train_Y, epochs=50, batch_size=32)
# 测试模型
train_predict = model.predict(train_X)
test_predict = model.predict(test_X)
# 可视化结果
plt.plot(train_Y, label='train true')
plt.plot(train_predict, label='train predict')
plt.plot(test_Y, label='test true')
plt.plot(test_predict, label='test predict')
plt.legend()
plt.show()
```
在这个代码中,我们首先加载数据,然后将其转换为模型可以使用的格式。我们使用了70%的数据来训练模型,剩下的30%用于测试模型。然后,我们构建了一个基于LSTM的模型,并用训练数据来训练它。最后,我们使用测试数据来测试模型,并将结果可视化。
阅读全文
相关推荐
















