我有7个类需要分类,我有10个特征。在这种情况下,是否存在我需要使用的k值的最佳值,或者我是否必须运行KNN,使k值介于1和10 (大约10)之间,并在算法本身的帮助下确定最佳值?
发布于 2012-07-20 05:03:36
除了我在评论中发布的the article之外,还有this one建议:
k的选择非常关键-k值较小意味着噪声对结果的影响较大。一个很大的值使得它的计算成本很高,并且有点违背了KNN背后的基本原理(接近的点可能具有相似的密度或类别) .A选择k的简单方法是设置k= n^(1/2)。
这在很大程度上取决于你的个人情况,有时最好是遍历k的每个可能值,然后自己决定。
发布于 2016-08-16 10:51:48
在k-NN算法中需要注意的重要一点是,在k-NN算法中,特征的数量和类的数量这两个在确定k-的值时不起作用。k-NN算法是一种基于距离度量对测试数据进行分类的自组织分类器,即如果与测试样本更接近的Class-1训练样本数量比其他类别训练样本多,则将该测试样本分类为Class-1。例如:如果k的值=5个样本,则基于距离度量选择5个最接近的训练样本,然后对每个类的最大样本数量进行投票。因此,如果3个样本属于Class-1,2个属于Class-5,则该测试样本被归类为Class-1。因此,k的值表示对测试样本进行分类所需的训练样本数。
对于您的问题,k的值是非参数的,选择k的值的一般经验规则是k = sqrt(N)/2,其中N表示训练数据集中<>e217中的样本数。我建议的另一个技巧是尝试保持k的值为奇数,以便在选择类之间没有联系,但这表明训练数据在类之间高度相关,使用简单的分类算法(如k-NN )将导致较差的分类性能。
发布于 2019-03-30 11:26:40
在KNN中,找到k的值并不容易。K值越小,意味着噪波对结果的影响越大,而k值越大,计算成本就越高。
数据科学家通常会选择:
1.如果类的数量为2,则为奇数
2.选择k的另一种简单方法是设置k= sqrt(n)。其中n=训练数据中的数据点的数量。
希望这能对你有所帮助。
https://stackoverflow.com/questions/11568897
复制相似问题