k临近算法(k nearest neighbors)

K-NN算法非常简单。KNN是一种监督式的学习算法,算法的主要目的是根据训练实例和对象的特征值来将对象分类。话不多说,上例子。

假定我们有一些产品的样本,它们的属性值(x1,x2)和分类情况如下:


现在有一个新品,x1=3,x2=7.怎么用KNN预测这个产品的好坏呢?


我们首先要找到离对象(x1=6,x2=5)最近的k个邻居。怎么确定它们之间的“距离”呢?我们这里选用类似二维平面坐标距离的计算方法来量化两对象之间的距离。例如对象A(x1=6,x2=5)和对象B(x1=4,x2=3)之间的距离d=(Ax1-Bx1)^2+(Ax2-Bx2)^2.

当然,根据具体应用的不用,“距离”的定义也是不同的,计算方法不用。

假设我们要找到k=8个邻居节点。下图是计算的距离结果和8个最近邻居的标记


总结KNN算法就是下面五个步骤:

1.决定参数K,也就是最近邻居的个数

2.计算预测样本到所有训练样本的“距离”

3根据计算出的距离,找出“距离”最近的k个邻居

4.收集这k个邻居的分类情况y

5.用这k个邻居的y值“主要成分”作为预测样本的分类


利用上面的算法,一步一步来走一遍刚才那个例子:



1.决定K值。假设k=3


2.计算到所有训练样本的距离:




3.找出k=3个比较的近的邻居(yes表示是三个较近的邻居之一,no则反之):



收集k=3个邻居的分类情况(bad表示坏,goog表示好):



5.用邻居的分类的主要成分来确定预测样本的分类:分类情况是2好1坏,那么我们就说预测样本(x1=3,x2=7)是好的。

分类完毕。

Python实现代码请移步http://blog.csdn.net/bdss58/article/details/41689527

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值