以下是一个示例TensorFlow代码,用于使用GRU(Gated Recurrent Unit)模型来预测股票未来20天的行情,使用了200天的历史行情作为输入数据。请注意,这只是一个简单的示例,您可以根据需要进行更多的模型调整和数据处理。
首先,确保您已经安装了TensorFlow和其他必要的库。然后,可以按照以下步骤创建和训练模型:
import numpy as np
import pandas as pd
import tensorflow as tf
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
# 1. 准备数据
# 请将您的历史股票数据加载到一个Pandas DataFrame中,确保有一个"Close"列,表示收盘价。
# 示例数据加载:
# df = pd.read_csv('stock_data.csv')
# stock_prices = df['Close'].values.astype(float)
# 2. 数据预处理
scaler = MinMaxScaler()
stock_prices_scaled = scaler.fit_transform(stock_prices.reshape(-1, 1))
# 创建数据集,用于200天历史行情预测未来20天
X, y = [], []
for i in range(200, len(stock_prices_scaled) - 20):
X.append(stock_prices_scaled[i - 200:i])
y.append(stock_prices_scaled[i:i + 20])
X = np.array(X)
y = np.array(y)
# 划分训练集和测试集
train_size = int(0.8 * len(X))
X_train, X_test = X[:train_size], X[train_size:]
y_train, y_test = y[:train_size], y[train_size:]
# 3. 创建并训练GRU模型
model = tf.keras.Sequential([
tf.keras.layers.GRU(50, activation='relu', input_shape=(X_train.shape[1], 1)),
tf.keras.layers.Dense(20) # 输出20天的预测
])
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(X_train, y_train, epochs=50, batch_size=64)
# 4. 预测未来20天的股价
predicted_stock_prices = model.predict(X_test)
# 5. 反归一化,将预测的股价还原到原始范围
predicted_stock_prices = scaler.inverse_transform(predicted_stock_prices)
y_test = scaler.inverse_transform(y_test)
# 6. 评估模型
mse = mean_squared_error(y_test, predicted_stock_prices)
print("均方误差 (MSE):", mse)
# 7. 可视化结果
plt.figure(figsize=(12, 6))
plt.plot(y_test[-1], label='实际股价')
plt.plot(predicted_stock_prices[-1], label='预测股价')
plt.legend()
plt.title('股价预测')
plt.xlabel('时间步')
plt.ylabel('股价')
plt.show()
请注意,这只是一个简单的示例,用于演示如何使用GRU模型进行股价预测。您可能需要进行更多的模型调整和参数优化,以获得更好的预测性能。此外,股价预测是一个复杂的问题,还需要考虑其他因素和特征工程来提高模型的准确性。