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

分类模型训练:数据集拆分时ValueError错误的原因咨询

搞定这个分层抽样的 ValueError 错误

错误到底说的啥?

这个错误直白得很:你要拆分出来的测试集样本数是9,但你的数据集一共有11个类别。用stratify做分层抽样的时候,要求每个类别在测试集里至少得有1个样本对吧?那9个样本要分给11个类别,肯定有至少2个类别分不到样本,这分层抽样根本做不了,所以Python就直接给你报错了。

你的代码哪里出问题了?

看你拆分测试集的这行代码:

_, X_test, _, y_test = train_test_split(filtered_features_FM_T, y_T_Cat, stratify=y_T_Cat)

你没指定test_size,train_test_split默认会拿总样本的20%当测试集。问题就出在你的测试数据集filtered_features_FM_T总样本量太小了——20%算下来只有9个样本,可类别却有11个,这不就撞车了嘛。

怎么解决?

给你几个靠谱的方向:

  • 调大测试集的大小:如果测试数据集总样本够的话,直接指定test_size为至少11,比如:
    _, X_test, _, y_test = train_test_split(filtered_features_FM_T, y_T_Cat, test_size=11, stratify=y_T_Cat)
    
    要是总样本数够多,也可以用比例,比如test_size=0.3,只要算出来的样本数≥11就行。
  • 暂时去掉分层抽样:如果只是临时跑个测试,不在乎类别分布的话,可以删掉stratify=y_T_Cat参数。但注意哈,这样测试集的类别分布可能和整体差很多,正式评估的时候别这么干。
  • 检查测试数据集本身:如果你的测试集样本量本来就比类别数还少,那这个数据集可能根本不适合做测试——要么补点测试样本,要么把相似的类别合并一下,减少类别总数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 19:37:53