python做BP神经网络东方财富网股票预测代码及预测图
时间: 2023-08-06 21:02:59 浏览: 238
一种基于Python和BP神经网络的股票预测方法
以下是使用Python实现BP神经网络对东方财富网股票进行预测的代码示例:
```python
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import Dense, Dropout, LSTM
# 读取数据
df = pd.read_csv('data.csv')
# 数据预处理
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(df['close'].values.reshape(-1, 1))
# 创建训练集和测试集
train_size = int(len(scaled_data) * 0.7)
train_data = scaled_data[:train_size, :]
test_data = scaled_data[train_size:, :]
# 创建X和Y
def create_dataset(dataset, look_back=1):
X, Y = [], []
for i in range(len(dataset) - look_back - 1):
a = dataset[i:(i + look_back), 0]
X.append(a)
Y.append(dataset[i + look_back, 0])
return np.array(X), np.array(Y)
look_back = 50
X_train, Y_train = create_dataset(train_data, look_back)
X_test, Y_test = create_dataset(test_data, look_back)
# 创建和训练模型
model = Sequential()
model.add(Dense(64, input_dim=look_back, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(X_train, Y_train, epochs=100, batch_size=32)
# 进行预测
train_predict = model.predict(X_train)
test_predict = model.predict(X_test)
# 反归一化并绘制预测结果图
train_predict = scaler.inverse_transform(train_predict)
Y_train = scaler.inverse_transform([Y_train])
test_predict = scaler.inverse_transform(test_predict)
Y_test = scaler.inverse_transform([Y_test])
import matplotlib.pyplot as plt
plt.plot(Y_test[0], label='true')
plt.plot(test_predict[:,0], label='predict')
plt.legend()
plt.show()
```
其中,`data.csv`文件是包含东方财富网股票数据的CSV文件,其中包含以下列:open, high, low, close, volume。
这个代码的实现过程是将数据经过归一化处理后,分为训练集和测试集。然后使用BP神经网络模型进行训练,并使用训练好的模型进行预测。最后将预测结果进行反归一化处理,并绘制预测结果图。
阅读全文