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

基于预测值作为真值的Pandas时间序列股票价格预测技术问询

股票收盘价时序预测的后续实践建议

你已经完成了时序预测中最核心的预处理步骤——用pandas.DataFrame.shift()构建了7日滞后特征,还特意保留最后两周的真实滞后数据来模拟未来预测场景,这个思路完全贴合真实业务里的预测逻辑,做得非常到位!

接下来可以按这几个步骤推进你的项目:

1. 合理划分训练与验证集

  • 从主数据集df中剔除最后两周的test_df,剩余部分作为训练集;
  • 建议再从训练集里拆分出最近1-2个月的数据作为验证集,用来调整模型超参数,避免直接用测试集调参导致的过拟合问题。

2. 选择适配的模型方向

根据你的数据规模(一年数据)和特征类型(滞后特征),推荐几个落地性强的模型:

  • 基线模型:线性回归:能快速验证你的滞后特征是否有效,作为后续模型的性能参考基准;
  • 传统时序模型:ARIMA/SARIMA:如果你的股票数据有明显的趋势或季节性,这类模型能精准捕捉时序规律;
  • 机器学习模型:XGBoost/LightGBM:擅长处理非线性关系,对滞后特征的兼容性极佳,训练和推理速度也适合小规模数据;
  • 深度学习模型:LSTM/GRU:如果想尝试捕捉更长周期的时序依赖,可以用这类模型,但需要更多的调参和数据预处理工作(比如归一化)。

3. 模拟真实滚动预测(重点环节)

既然你想用test_df模拟未来两周的预测,一定要避免数据泄露——真实场景中你不可能提前拿到未来的滞后值,所以得用滚动预测的方式:

  • 先用训练集训练模型,预测第1天的收盘价;
  • 把第1天的预测值作为新的t-1特征,替换test_df中第2行对应的真实t-1值,同时把原t-2到t-7依次前移一位(变成t-1到t-6);
  • 重复这个过程,直到完成两周的所有预测。
  • 这里给你一段简化的示例代码:
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression

# 初始化并训练基线模型
model = LinearRegression()
X_train = train_df[['t-7', 't-6', 't-5', 't-4', 't-3', 't-2', 't-1']]
y_train = train_df['close_price']
model.fit(X_train, y_train)

# 初始化第一组滞后特征(来自test_df的第一行)
current_lags = test_df.iloc[0][['t-7', 't-6', 't-5', 't-4', 't-3', 't-2', 't-1']].values.reshape(1, -1)
predictions = []

# 滚动预测两周
for _ in range(len(test_df)):
    pred = model.predict(current_lags)[0]
    predictions.append(pred)
    # 更新滞后特征:左移一位,把最新预测值放到最后一位
    current_lags = np.roll(current_lags, -1)
    current_lags[0, -1] = pred

# 将预测结果合并到测试集
test_df['predicted_close'] = predictions

4. 模型效果评估

  • 用适合时序数据的指标:MAE(平均绝对误差)、RMSE(均方根误差)、MAPE(平均绝对百分比误差)——MAPE对股票这类关注相对波动的场景更有参考价值;
  • 可视化真实收盘价与预测值的走势曲线,能更直观地看到模型在涨跌节点的预测表现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:15:25