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

train_test_split函数报错:训练集为空的问题解决方法

修复板球运动员得分预测程序的ValueError问题

你编写的板球运动员得分预测程序运行时出现以下错误:

ValueError: With n_samples=1, test_size=0.33 and train_size=None, the resulting
train set will be empty. Adjust any of the aforementioned parameters

问题根源

你的代码中X和Y的定义完全错误:你只是把列名放进了列表,并没有从加载的data数据框中提取实际的样本数据,导致train_test_split只识别到1个"样本"(就是那串列名),按33%的测试集拆分后,训练集样本数为0,触发报错。

修复步骤

  • 正确提取特征与目标变量:使用pandas的列索引语法,从data中取出对应列的真实数据
  • 确保数据集有足够样本:检查你的Rohit Sharma.csv文件,确保里面有至少2条以上的有效数据(样本量越多,模型效果越好);如果样本极少,可以适当调小test_size(比如设为0.2或0.1)

修正后的完整代码

import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

# 加载数据集
data = pd.read_csv('Rohit Sharma.csv')

# 正确提取特征矩阵X和目标变量Y
X = data[['against','wickets','currentrun','weather','ball','over']]
Y = data['runsmade']

# 拆分训练集和测试集(如果样本少,可将test_size调至0.2或更小)
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=42)

# 训练模型
reg = LinearRegression()
reg.fit(x_train, y_train)

# 预测并输出结果
a = reg.predict(x_test)
print(a)
print(data)

额外提示

  • 如果CSV中存在缺失值,训练前需要先处理(比如用data.dropna()删除缺失行,或data.fillna()填充),否则模型训练会报错
  • 线性回归对特征的数值类型有要求,确保X中的列都是数值型数据(如果有字符串类型的特征,比如against是对手名称,需要先做编码处理,比如独热编码)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:20:26