You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GPR对苹果股票数据做时间序列预测遇阻求助

基于高斯过程回归(GPR)的苹果股价时间序列预测问题

我正在用Python中的**高斯过程回归(Gaussian Process Regression,GPR)**处理苹果股价的时间序列预测任务,目标是用10年的开盘/收盘/最高/最低股价数据训练模型,预测未来1个月的股价走势。

目前我尝试用过去1年的数据做GPR预测,但作为经验不足的开发者,过程中遇到不少问题。最终需求是用过去10年的多维度股价数据训练模型,预测未来1个月的走势,现在完全不清楚后续推进方向,希望得到建议和指导。


数据集格式

数据集包含日期(Date)、开盘价(Open)、最高价(High)、最低价(Low)、收盘价(Close)、成交量(Volume)等字段。


实验1:当日特征预测当日收盘价(测试集准确率接近100%)

当我将当日的开盘/最高/最低等数据作为特征X、当日收盘价作为标签Y训练测试时,模型在测试集上的准确率接近100%:

  • 普通训练测试拆分结果:实际收盘价与GPR预测值高度重合,拟合效果极佳
  • 时间序列预测结果:预测曲线与实际走势几乎一致

代码实现

导入所需库

import pandas as pd
import numpy as np
import os
import datetime as dt
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
from sklearn.model_selection import train_test_split
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.gaussian_process.kernels import RBF
from sklearn.preprocessing import MinMaxScaler, StandardScaler
scaler = MinMaxScaler()

加载数据集

dirname = os.path.dirname(__file__)
Data = pd.read_csv( os.path.join(dirname, 'APPL.csv'))

dataY = Data['Close'].values
dataX = Data.copy()
dataX = Data.drop('Close', axis=1)
dataX = Data.drop('Date', axis=1)
TrainX, TestX, TrainY, TestY  = train_test_split(dataX, dataY, test_size=0.3, random_state=42, shuffle=False)

TrainX = scaler.fit_transform(TrainX)
TestX = scaler.transform(TestX)

拆分测试数据用于绘图

PlotY = []
for i in TestY: 
    PlotY.append(i)

PlotX = []
j=0
for i in TestY:
    PlotX.append(j)
    j=j+1

GPR测试集验证

from sklearn.gaussian_process.kernels import DotProduct, WhiteKernel
kernel =  WhiteKernel() + DotProduct()
gpr = GaussianProcessRegressor(kernel=kernel)
gpr.fit(TrainX, TrainY)
ForecastGPR = gpr.predict(TestX)
fig = plt.figure(figsize = (8, 8))
plt.plot(PlotX, PlotY, color="green", label='actual', )
plt.plot(ForecastGPR, label='Predicted', color='red', linewidth = 0.5)
plt.xlabel("Time (Days)")
plt.ylabel("Closing Price (USD)")
plt.title("GPR Predictions vs Actual Values (30% Test data)", y = -0.15)
plt.legend(['Actual Price', 'Predicted Price (GPR))'], bbox_to_anchor=(0., 1.02, 1., .102), loc=3, mode="expand", borderaxespad=0)
plt.show()

评估指标输出

print("GPR R-squared", "{:.2%}".format(r2_score(TestY, ForecastGPR)))
print("The Root Mean Squared Error:", round(np.sqrt(mean_squared_error(TestY, ForecastGPR)),2))
print("The Mean Absolute Error:", round(mean_absolute_error(TestY, ForecastGPR),2))
# 观测准确率99.52%

实验2:用天数特征预测未来收盘价(结果不符合预期)

当尝试以天数为特征X、收盘价为标签Y进行未来预测时,模型输出了不准确的平线,未来预测结果完全不符合预期,核心代码如下:

l = []
Data = pd.read_csv( os.path.join(dirname, 'APPL.csv'))

dataY = Data['Close'].values
# 总数据行数=2749
for i in range(2749):
    l.append(i)

dataX= np.array(l).reshape(-1, 1)

TrainX, TestX, TrainY, TestY  = train_test_split(dataX, dataY, test_size=0.3, random_state=42, shuffle=False)

TrainX = scaler.fit_transform(TrainX)
TestX = scaler.transform(TestX)
from sklearn.gaussian_process.kernels import DotProduct, WhiteKernel
kernel =  WhiteKernel() + DotProduct()
gpr = GaussianProcessRegressor(kernel=kernel)
gpr.fit(TrainX, TrainY)
i = 2749
for i in range(2849):
    l.append(i)
TestX = np.array(l).reshape(-1, 1)
ForecastGPR = gpr.predict(TestX)

需求与求助

我的最终目标是用过去10年的多维度股价数据(开盘、最高、最低、收盘价等)训练GPR模型,预测未来1个月的股价走势。目前完全不清楚后续推进方向,恳请提供具体的建议与指导。

内容的提问来源于stack exchange,提问作者Aditya Agarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:25:30