python东方财富网股票收盘价时间序列预测代码
时间: 2023-08-17 19:04:06 浏览: 83
以下是使用Python实现的东方财富网股票收盘价时间序列预测代码,具体步骤如下:
1. 导入所需库:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import Dense, LSTM
```
2. 读取数据:
```python
df = pd.read_csv('stock.csv', usecols=['date', 'close'])
```
其中,'stock.csv' 是下载的东方财富网股票数据文件,包含日期和收盘价两列。
3. 数据预处理:
```python
# 将日期列转换为 datetime 类型
df['date'] = pd.to_datetime(df['date'])
# 将日期列设置为索引
df.set_index('date', inplace=True)
# 将收盘价归一化到 [0, 1] 区间
scaler = MinMaxScaler()
df['close'] = scaler.fit_transform(df[['close']])
```
4. 创建训练集和测试集:
```python
# 划分训练集和测试集
train_size = int(len(df) * 0.8)
train_set = df.iloc[:train_size, :]
test_set = df.iloc[train_size:, :]
```
5. 创建时间窗口:
```python
# 创建时间窗口
def create_time_series(data, window_size):
X, y = [], []
for i in range(len(data) - window_size):
X.append(data[i:i+window_size])
y.append(data[i+window_size])
return np.array(X), np.array(y)
window_size = 30
X_train, y_train = create_time_series(train_set.values, window_size)
X_test, y_test = create_time_series(test_set.values, window_size)
```
6. 构建 LSTM 模型:
```python
model = Sequential()
model.add(LSTM(50, return_sequences=True, input_shape=(window_size, 1)))
model.add(LSTM(50, return_sequences=False))
model.add(Dense(25))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mean_squared_error')
```
7. 训练模型:
```python
model.fit(X_train, y_train, batch_size=64, epochs=100)
```
8. 预测并可视化结果:
```python
# 预测测试集
y_pred = model.predict(X_test)
# 反归一化
y_pred = scaler.inverse_transform(y_pred)
y_test = scaler.inverse_transform(y_test)
# 可视化结果
plt.figure(figsize=(10, 6))
plt.plot(y_test, label='Real Price')
plt.plot(y_pred, label='Predicted Price')
plt.legend()
plt.show()
```
完整代码如下: