首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >K近邻算法中k的取值

K近邻算法中k的取值
EN

Stack Overflow用户
提问于 2012-07-20 04:36:46
回答 5查看 59.1K关注 0票数 9

我有7个类需要分类,我有10个特征。在这种情况下,是否存在我需要使用的k值的最佳值,或者我是否必须运行KNN,使k值介于1和10 (大约10)之间,并在算法本身的帮助下确定最佳值?

EN

回答 5

Stack Overflow用户

发布于 2012-07-20 05:03:36

除了我在评论中发布的the article之外,还有this one建议:

k的选择非常关键-k值较小意味着噪声对结果的影响较大。一个很大的值使得它的计算成本很高,并且有点违背了KNN背后的基本原理(接近的点可能具有相似的密度或类别) .A选择k的简单方法是设置k= n^(1/2)。

这在很大程度上取决于你的个人情况,有时最好是遍历k的每个可能值,然后自己决定。

票数 13
EN

Stack Overflow用户

发布于 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 )将导致较差的分类性能。

票数 10
EN

Stack Overflow用户

发布于 2019-03-30 11:26:40

在KNN中,找到k的值并不容易。K值越小,意味着噪波对结果的影响越大,而k值越大,计算成本就越高。

数据科学家通常会选择:

1.如果类的数量为2,则为奇数

2.选择k的另一种简单方法是设置k= sqrt(n)。其中n=训练数据中的数据点的数量。

希望这能对你有所帮助。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11568897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档