python东方财富网股票收盘价时间序列预测具体代码
时间: 2023-08-17 08:04:06 浏览: 187
下面是一个基于LSTM神经网络的东方财富网股票收盘价时间序列预测的Python代码示例:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense, LSTM
# 读取数据
df = pd.read_csv('stock_price.csv', index_col='date', parse_dates=True)
# 创建训练集和测试集
train_size = int(len(df) * 0.8)
train_data = df['close'].iloc[:train_size]
test_data = df['close'].iloc[train_size:]
# 标准化数据
mean = train_data.mean()
std = train_data.std()
train_data = (train_data - mean) / std
test_data = (test_data - mean) / std
# 将时间序列转换为监督学习问题
def to_supervised(data, n_input=1, n_output=1):
in_data = []
out_data = []
for i in range(len(data) - n_input - n_output + 1):
in_data.append(data[i:i + n_input])
out_data.append(data[i + n_input:i + n_input + n_output])
return np.array(in_data), np.array(out_data)
train_input, train_output = to_supervised(train_data.values)
test_input, test_output = to_supervised(test_data.values)
# 创建并训练LSTM模型
model = Sequential()
model.add(LSTM(64, activation='relu', input_shape=(train_input.shape[1], 1)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
history = model.fit(train_input, train_output, epochs=100, batch_size=16, validation_data=(test_input, test_output), verbose=2)
# 进行预测,并将结果转换为收盘价
forecast = model.predict(test_input).reshape(-1) * std + mean
# 绘制预测结果与真实值的对比图
plt.plot(test_data.values, label='True Values')
plt.plot(forecast, label='Predictions')
plt.title('Stock Price Prediction')
plt.xlabel('Date')
plt.ylabel('Close Price')
plt.legend()
plt.show()
```
需要注意的是,以上代码仅是一个示例,实际使用时需要根据具体情况进行调整,并且需要对LSTM模型的超参数进行多次试验和调整来得到最优的预测效果。同时还需要注意风险控制,不要将所有资金都投入到股票市场中。
阅读全文