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

如何在K近邻回归中使用2个以上变量?附报错解决

K近邻回归多变量使用及报错修复

能不能用2个以上变量?

完全可以,K近邻回归天然支持多特征输入,不管是3个还是更多特征都能处理,这也是它的核心特性之一。

具体操作方法

要使用3个或更多变量,只需要在选取输入特征时增加对应的列即可。比如你要新增一个Hospital density特征,修改代码如下:

# 选取3个特征作为输入X
X = df[['Health index', 'Number of PHYSICIAN', 'Hospital density']]
y = df['Mortality rate']

# 后续划分数据集、训练模型的步骤和之前完全一致
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42)
neigh = neighbors.KNeighborsRegressor(n_neighbors=5).fit(X_train, y_train)

报错原因及修复方案

你碰到的ValueError: X has 2 features, but KNeighborsRegressor is expecting 3 features as input.,本质就是训练模型时用的特征数量,和预测时输入的特征数量不匹配,常见两种情况:

  • 训练时用了3个特征,但自定义的预测样本(比如你的sample变量)只给了2个值
    修复:给sample补充第三个特征的数值,比如对应新增的Hospital density,改成:
    sample = [1000, 1000, 50]  # 第三个数值对应新增的特征
    sample_pred = neigh.predict([sample])
    
  • 训练时误选了2个特征,但预测时传入了3个特征
    修复:检查X = df[[]]里的特征列数量,确保和预测输入的特征数、顺序完全一致

所有用于预测的输入(包括X_test和自定义样本),特征数量、顺序必须和训练时的X_train完全对齐,否则就会触发这个特征不匹配的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:55:17