如何在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
相关产品推荐
相关产品推荐

