实用版Python利用LSTM模型预测股价及模型的优化改进@火花running
LSTM模型预测股价数据及模型的优化改进
构建一个LSTM模型
首先,我们构建一个基本的LSTM模型,使其能够满足我们预测时间序列数据形式的股价的要求。
这个代码会从一个名为’stock_price.csv’的CSV文件中读取股票价格数据,并使用LSTM模型进行预测。在训练和测试数据集的创建和模型的构建和训练过程中,我们使用了NumPy、Pandas、Scikit-learn和TensorFlow等Python库。最后,我们计算了预测结果的RMSE,并将预测结果可视化。
# 导入所需的库
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM
# 读取数据
df = pd.read_csv('stock_price.csv')
# 数据预处理
data = df.filter(['close_price']).values
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data)
# 创建训练数据集和测试数据集
train_data_len = int(np.ceil(0.8 * len(data)))
train_data = scaled_data[0:train_data_len, :]
# 将数据集转换为x_train和y_train
x_train = []
y_train = []
for i in range(60, len(train_data)):
x_train.append(train_data[i-60:i, 0])
y_train.append(train_data[i, 0])
x_train, y_train = np.array(x_train), np.array(y_train)
x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))
# 构建LSTM模型
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(25))
model.add(Dense(1))
# 编译模型
model.compile(optimizer='adam', loss='mean_squared_error')
# 训练模型
model.fit(x_train, y_train, batch_size=1, epochs=