我正在尝试通过研究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的哪个值。你们能详细说明它背后的逻辑吗?
提前致谢!