Python 在KNN算法中,为什么测试错误率在K值较高时增加?

Python 在KNN算法中,为什么测试错误率在K值较高时增加?,python,machine-learning,knn,Python,Machine Learning,Knn,我得到这样的错误率高达20个值这可能是什么原因? k_值:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] 错误[0.0,0.0,0.0,0.0,0.0,0.0,0.0020000000000018,0.0020000000000018,0.0020000000000018,0.0020000000000018,0.0020000000000018,0.0020000000000018,0.0020000000000000000018,0.

我得到这样的错误率高达20个值这可能是什么原因? k_值:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] 错误[0.0,0.0,0.0,0.0,0.0,0.0,0.0020000000000018,0.0020000000000018,0.0020000000000018,0.0020000000000018,0.0020000000000018,0.0020000000000018,0.0020000000000000000018,0.006000000000000005,0.0040000000000000036,0.008000000000000007,0.006000000000000000000005,0.010000000009,0.0080000000000000012,0.01200000000000001] 这是我的测试错误率


我想知道错误率随k值增加而增加的原因?

KNN中的参数k控制着模型的复杂性。你没有给出具体问题的细节,但你可能看到的是偏见/差异的权衡。这是一本很好的读物


通常,在验证集中尝试模型中的不同超参数值(KNN中的K值),并保留最佳值。请注意,此验证集与测试集不同

KNN中的K表示考虑的最近邻的数量。因此,考虑的邻国越多,对最终结果的影响就越大。这是有道理的,虽然更多的邻居采取,更多的元素,不同的类别也采取。这可能会导致错误分类,尤其是对于簇边界上的元素

另一个要考虑的例子是两个不平衡的簇-一个簇有5个元素,第二个簇有20个。当K=10时,来自第一个集群的所有元素将被分类为第二个集群。另一方面,如果簇很好地分开,K=3将产生更好的结果


结果的确切原因将取决于集群的数量、位置、密度和基数

K值越高,数据集中的大多数类对结果的影响越大,因此错误率越高

假设有100个数据点,80个属于类标签“0”,20个属于类标签“1”

现在,如果我选择k>40的任何值,所有数据点现在都将属于多数类


通常情况下,较大的K值会导致在同一时间的拟合不足。非常小的K值(尽管有特定问题)会导致拟合过度

请提供一个源代码示例。