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

调用train_test_split划分数据集触发空训练集ValueError报错如何解决?

报错原因
  1. 直接触发原因是传入train_test_split的x_data或y_data样本总数为0,对应报错提示中的n_samples=0。按照你设置的test_size=0.1计算,划分后测试集、训练集的样本数均为0,不满足sklearn的划分规则,因此抛出ValueError。
  2. 空数据集一般是上游处理逻辑出错导致:比如数据读取时路径填错没加载到有效数据、数据清洗的过滤规则太严把所有样本都删了、特征处理操作不当清空了数据集等。
解决方法
  • 先校验输入数据有效性:在调用划分函数前加校验代码,确认x_data和y_data样本数匹配且不为0,示例如下:
print("特征样本数:", len(x_data), "标签样本数:", len(y_data))
assert len(x_data) == len(y_data), "特征和标签的样本数量不匹配"
assert len(x_data) > 0, "输入数据集为空"
  • 排查上游数据流程:检查数据读取的路径、查询参数是否正确,逐一验证数据清洗、特征工程的每一步输出,修正导致全量样本被删除的错误逻辑。
  • 若本身数据集样本量很小:可以降低测试集占比,比如把test_size改成0.05,或者直接用K折交叉验证来评估模型,不需要做固定比例的训练测试集划分。
  • 特殊场景下也可以手动指定train_size参数,保证训练集样本数至少大于0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:06:04