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

使用Scikit-learn回归模型预测失效的问题排查求助

解决思路:从数据预处理到特征工程逐一排查

1. 日期特征的错误处理

  • 直接把原始Date字符串(比如"2024-05-20")喂给模型是致命问题:树模型无法解析字符串,会默认把不同日期当成离散类别,导致特征权重完全混乱。
  • 正确处理方式:
    • 转成连续数值:比如计算日期距离数据集起始日的天数(df['Date'] = (pd.to_datetime(df['Date']) - pd.to_datetime(df['Date']).min()).dt.days)。
    • 提取周期特征:比如年、月、星期几,注意星期几这类循环特征要用独热编码或序数编码,不能直接用数字1-7。

2. 训练集与测试集的时间拆分错误

  • 绝对不能用train_test_split随机拆分:股票价格是时间序列,未来数据的分布和历史有漂移,随机拆分会导致数据泄露(模型提前看到了未来数据)。
  • 正确拆分:严格按时间顺序划分,比如用2023年及之前的数据训练,2024年的数据测试,确保训练数据的时间全部早于测试数据。

3. 特征与目标的相关性验证

  • 先做相关性分析:用df.corr()查看OpenValue、TradeVolume、处理后的日期特征和CloseValue的相关系数。如果相关系数接近0,说明这些特征本身没法有效预测收盘价,必须补充特征。
  • 补充特征方向:
    • 技术指标:移动平均线(MA5、MA20)、相对强弱指标(RSI)、成交量变化率等。
    • 滞后特征:前1天/前3天的收盘价、开盘价(时间序列预测中,滞后特征才是核心)。

4. 测试集数据合理性检查

  • 确认测试集的OpenValue、TradeVolume是否和训练集分布一致:如果测试集成交量突然是训练集的10倍,模型肯定会输出离谱结果。
  • 检查缺失值:测试集的特征缺失会导致模型输出异常,提前用均值、中位数或插值法填充。

5. 模型基础参数调优

  • 虽然换模型没用,但可以先做基础调整:
    • GradientBoosting调小learning_rate,增加n_estimators,避免过拟合。
    • 限制max_depth,防止模型过度拟合训练集噪声。
    • 用GridSearchCV做简单参数搜索,排除参数不合理的可能。

6. 基准线对比

  • 先跑个最简单的基准模型:比如预测第二天收盘价等于当天收盘价(随机游走模型)。如果你的模型连这个基准都不如,说明特征或数据处理肯定有问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:15:26