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

Keras二分类准确率卡在50%:BTC、ETH次日涨跌预测问题求解

模型准确率长期卡在50%左右的核心原因
  • 时间序列拆分逻辑错误:你使用train_test_split随机打乱拆分数据集,完全破坏了金融数据的时序依赖关系,存在严重的数据泄露——训练过程会引入未来时段的数据,导致模型根本无法学习到真实的时序规律,最终效果和随机猜测一致。时间序列任务必须按时间先后顺序拆分,前80%时间的数据作为训练集,后20%作为测试集,绝对不能打乱顺序。
  • LSTM输入逻辑错误:LSTM的作用是处理多时间步的序列特征,但你当前的输入仅包含单日的15个特征,每个特征的时间步长度为1,相当于没有给LSTM提供任何历史时序信息,完全无法发挥序列建模的优势。正确做法是设置时间窗口(比如过去3/7/14天),将窗口内的所有特征作为单样本输入,输入形状应为(样本数, 时间窗口长度, 特征数)。
  • 归一化存在数据泄露:你直接对全量数据集做MinMaxScaler拟合,相当于将测试集的统计信息提前泄露给了训练过程,会导致模型泛化能力下降。正确做法是仅在训练集的特征上拟合归一化器,再分别对训练、验证、测试集的特征做变换,且标签列不需要参与归一化。
  • 特征预测性不足:原始OHLCV、市值等基础特征本身对价格涨跌的预测性极低,金融价格走势接近随机游走,你需要额外构建衍生特征,比如不同周期的收益率、移动平均线、RSI、MACD等常用技术指标,提升特征的信息密度。
预测输出为浮点值的问题解答
  • 该情况完全正常:你输出层使用的sigmoid激活函数,返回的是样本属于正类(次日上涨,标签为1)的概率值,范围固定在0-1之间,不会直接输出0/1的分类结果。
  • 需要手动做阈值转换:默认情况下Keras的二分类准确率指标会以0.5为阈值做判断,你自己使用预测结果时,可以根据需求设定阈值,通用做法是大于等于0.5判定为1(上涨),小于0.5判定为0(下跌);如果你对误判的容忍度有倾向,也可以调整阈值,比如希望降低误判上涨的概率,就将阈值调高到0.6或更高。

内容的提问来源于stack exchange,提问作者M. Safari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 20:36:03