【冰糖R语言】class 库实现 KNN 分类模型 问题讨论

有时会使用class中的knn模型实现knn分类的功能

该库使用c语言实现底层功能,运行速度快,且参数数量少使用方便(knn本身参数也没啥)

knn(train, test, cl, k = 1, l = 0, prob = FALSE, use.all = TRUE)

但,其对于“近邻”的定义采用了“模糊”概念,与常规理解近邻稍有区别:

假设 K = 3,给定测试样例 X 和 训练集 Train

传统理解中,从 Train 中找到与 X 距离最近的 3 个样例,进行多数投票确定 X 的预测类标;

class 实现中,从 Train 中可能找到 3 + n 个近邻样本,其中 3 是指传统理解中样例 X 的 3 个近邻样本,n 为与X与第三个近邻的距离“近似”相等的其他近邻样本

class 中设定了阈值 EPS = 1e-4,如果 满足(样本Z与X的距离)<= (第K个近邻与X的距离) * (1+EPS),则样本Z也选为近邻

那么,K=3时可能选择了多于3个近邻,此时如果

use.all = TRUE 时,使用所有这些样本投票;

use.all = FALSE 时,使用确定的K=3个近邻投票;

此时设定 use.all 的不同值可能会得到的不同的预测结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰糖不在家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值