K值与KNN的准确度

时间:2016-12-22 08:46:12

标签: numpy machine-learning scikit-learn knn

我正在尝试通过研究UCI存储库提供的乳腺癌数据集来学习KNN。数据集的总大小为699,包含9个连续变量和1个类变量。

我在交叉验证集上测试了我的准确性。对于K = 21& K = 19。准确率为95.7%。

from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier(n_neighbors=21)
neigh.fit(X_train, y_train) 
y_pred_val = neigh.predict(X_val)
print accuracy_score(y_val, y_pred_val)

但是对于K = 1,我得到的准确率= 97.85% K = 3,精度= 97.14

我读了

  

k的选择非常关键 - k的小值意味着噪声对结果的影响更大。一个大的值使它在计算上变得昂贵并且有点击败了KNN背后的基本哲学(近点的点可能具有相似的密度或类)。选择k的简单方法是设置k = n ^(1/2)。 this example

我应该为我的模型考虑K的哪个值。你们能详细说明它背后的逻辑吗?

提前致谢!

0 个答案:

没有答案