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

在Colab中划分训练测试数据出错,求test_train split及singleton解释

训练测试划分时Singleton错误的解释与解决办法

什么是错误里的Singleton?

这里的singleton指的是划分后训练集/测试集中仅包含单个样本的类别。比如你的数据集里某类原本只有3个样本,当你把测试集比例调到0.4,可能2个样本被分到测试集,训练集里这类就只剩1个——这个单样本的类别就是singleton。大多数数据处理或建模框架会禁止这种情况,因为单个样本无法支撑模型学习该类的特征,后续的评估指标(比如F1、召回率)也无法合理计算。

为什么调大test_split到0.4会触发这个错误?

当测试集比例提升,训练集的数据量被压缩。如果你的数据集本身存在样本量极少的类别(比如只有2-5个样本),划分后很容易出现某类在训练集/测试集里只剩1个样本的情况,直接触发框架的校验报错。

解决办法

  • 先排查数据集类别分布:先统计每个类别的样本数量,找出那些样本量不足5个的小类别。
  • 针对小类别处理:
    • 用分层划分(stratified split):强制让训练集和测试集的类别分布和原数据集一致,避免某类在子集里被过度抽取。
    • 降低test_split比例:如果业务允许,调回0.2或更低,保证每个类别在训练集和测试集都至少有2-3个样本。
    • 过采样小类别:用SMOTE等算法生成小类别的合成样本,增加其样本量后再划分。
    • 合并/删除小类别:如果小类别业务价值低,要么合并到相似类别,要么直接删除。

内容的提问来源于stack exchange,提问作者floyd.dsouza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:20:31