Pandas与scikit-learn:train_test_split划分后X、y维度异常问题
解决train_test_split返回维度不符的问题
嘿,这个问题我太熟悉了!你遇到的维度不匹配问题,根源是把train_test_split的返回值顺序搞反了。
问题出在哪?
train_test_split的标准返回顺序是固定的:
- 训练集特征 (
train_X) - 测试集特征 (
test_X) - 训练集目标变量 (
train_y) - 测试集目标变量 (
test_y)
而你写的代码把train_y和test_X的位置弄反了:
train_X,train_y,test_X, test_y = train_test_split(X,Y,test_size=0.33,shuffle = True, random_state=45)
这就导致train_y实际上拿到的是测试集特征(形状(304,40)),test_X拿到的是训练集目标变量(形状(616,)),完全错位的维度自然会让训练模型时报错。
正确的写法
把变量顺序调整成符合返回值的顺序就行:
train_X, test_X, train_y, test_y = train_test_split(X, Y, test_size=0.33, shuffle=True, random_state=45)
验证是否正确
你可以打印各变量的形状确认维度是否匹配:
print(f"train_X shape: {train_X.shape}") # 预期输出: (616, 40) print(f"test_X shape: {test_X.shape}") # 预期输出: (304, 40) print(f"train_y shape: {train_y.shape}") # 预期输出: (616,) print(f"test_y shape: {test_y.shape}") # 预期输出: (304,)
这样调整后,特征集和目标变量的维度就完全对应,训练模型就不会有问题啦。
内容的提问来源于stack exchange,提问作者Javiss
相关产品推荐
相关产品推荐

