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

sklearn实现KNN回归拟合时抛出ValueError异常问题咨询

报错原因说明

该报错和你提到的数值量级、原始数据自带空值没有关系,核心问题是特征拼接逻辑错误,人为生成了大量NaN值:

  • 调用pd.concat(glasses)时未指定拼接轴,pandas默认使用axis=0做纵向行拼接
  • 你提取的两个特征A(列名YearBuilt)、B(列名YrSold)列名不匹配,纵向拼接时会生成两列结构:来自A的行对应的YrSold位置全为NaN,来自B的行对应的YearBuilt位置全为NaN
  • 拼接后的特征集x行数是原始样本量的2倍,和标签y的长度也不匹配,大量自动填充的NaN值直接触发了sklearn的输入合法性校验,抛出对应错误。
修复方法

将特征拼接改为横向列拼接即可,修改对应代码行:

# 原错误代码
# x = pd.concat(glasses)
# 修正后代码
x = pd.concat(glasses, axis=1)

修正后生成的特征集x行数和原始样本量一致,包含YearBuilt、YrSold两个完整特征列,不会再产生无意义的NaN填充。

快速排查技巧

后续遇到同类输入校验报错,可以在模型fit前打印特征集信息快速定位问题:

# 打印特征集维度,正确结果应为(原始样本数, 2)
print(x.shape)
# 统计每列空值数量,错误拼接时两列的空值数都会等于原始样本量
print(x.isna().sum())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:12:24