如何在K近邻回归中添加2个以上的变量



这是我为knn回归中的两个变量编写的代码:

X = df[['Health index', 'Number of PHYSICIAN']]
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)
sample = [1000, 1000]
sample_pred = neigh.predict([sample])
print('Mortality rate:', int(sample_pred),'%')
y_pred = neigh.predict(X_test)
mse = metrics.mean_squared_error(y_test, y_pred)
print('Root mean squared error (RMSE):', sqrt(mse))
print('R-squared score:', metrics.r2_score(y_test, y_pred))

在knn回归中是否可以使用2个以上的变量?如果可以,如何使用?当我尝试拟合3个变量时,这个错误消息出现了,我不知道在哪里修复它。

ValueError: X has 2 features, but KNeighborsRegressor is expecting 3 features as input.

KNN回归函数可以使用2个以上的变量。

如果您想这样做,只需在X:中添加更多列即可

X = df[['Health index', 'Number of PHYSICIAN', 'feature 3', 'feature 4', ...]] 

注意:你应该在X中规范化你的变量,这样它们都有相似的量表(否则一些特征可能会加重其他影响学习过程的特征(。

正如@kwinkunks在评论中提到的那样:在规范化特性时,重要的是只在训练子集上拟合规范化器/缩放器,然后使用该规范化器和缩放器转换训练和测试数据(以及验证数据,如果相关(。如果在拆分之前将其放在整个数据集上,则存在数据泄露的风险。

此外,您可能需要考虑对于您的问题,5个邻居是否足以避免过度拟合

相关内容

  • 没有找到相关文章

最新更新