使用train_test_split拆分数据集报not enough values to unpack错误求助
报错触发原因
- 核心逻辑:
train_test_split函数的返回值数量和输入的数据集数量直接对应:输入1个数据集返回2个拆分结果,输入2个数据集返回4个拆分结果,依次类推。 - 代码问题:你仅传入了
m_nyc这1个数据集,函数只会返回2个值,但你用4个变量接收返回结果,自然触发“期望4个值,仅得到2个”的解包报错。 - 额外逻辑错误:你没有提前拆分特征(X)和预测目标(y),甚至把预测目标
price_log也一起做了标准化,不符合常规建模逻辑,预测目标一般不需要标准化。
修复方案
你需要先拆分特征和预测目标,只对特征做标准化,再把两个数据集传入train_test_split,修改后的对应代码如下:
# 预处理完m_nyc后,先拆分特征和预测目标 X = m_nyc.drop(columns=['price_log']) y = m_nyc['price_log'] # 仅对特征做标准化,不要标准化标签 scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # 传入X、y两个数据集,函数会返回4个拆分结果,匹配左侧变量数量 X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, train_size=0.7, test_size=0.3, random_state=100)
内容的提问来源于stack exchange,提问作者Gavin O'Doherty
相关产品推荐
相关产品推荐

