k近邻学习

1.概念

k邻近学习是第一种常用的监督学习方法,其工作机制如下:给定测试样本,基于某种距离度量找出训练集中与最靠近的k个训练样本,然后基于这k个“邻居”的信息来进行预测。

一个简单的例子:如果有人想根据相似性推荐一些东西,他们会为用户推荐一首与其喜欢的歌曲醉相思的,但是他还未曾听过的歌。这种做法其实是1邻近算法。

完整的kNN算法是这种直觉做法的一种扩展,在做出推荐之前,可能会同时参考多于一个的数据点。完整的k近邻算法原理和我们向朋友征求意见的原理差不多:首先,我们找到一些和我们品味相似的朋友,然后向他们征求意见。如果他们中大多数推荐了同样的物品,我们则推测这款物品也应该是我们本身喜欢的东西。kNN算法就是把这种思路转换成了一种可行的算法。

kNN通过依据k个对象中占优的类别进行决策,而不是单一的对象类别决策。这两点就是kNN算法的优势。

kNN算法的思想:就是在训练集中数据和标签已知的情况下输入测试数据,将测试数据的特征让你给与训练集中对应的特征进行相互比较,找到训练集中最为相似的前k个数据,则该测试数据对应的类别就是k个数据中次数最多的那个分类。

2.算法分析

kNN算法的具体描述:
- 计算测试数据与各个训练数据之间的距离
- 按照距离的递增关系进行排序
- 选取距离最小的k个点
- 确定前k个点所在类别出现的频率
- 返回前k个点中出现频率最高的类别作为测试数据的预测分类

k近邻算法最重要的属性便是集合中所有点两两之间的距离,因此进行kNN算法的第一步便是计算任意两点之间的距离,并把它们保存在距离矩阵里面,(这一点同相似性研究中的距离类似),“距离”指的是传统意义的欧氏距离,公式如下

distance=sqrt(x^2+y^2)

并将得到的距离保存在距离矩阵中。得到距离矩阵之后,我们需要一个函数来返回某一个点的k近邻。假设我们需要第i个点的k近邻,首先我们从距离矩阵中提取第i行数据,这一行数据表示其他所有点到第i个点的距离,然后对这组数据进行排序,取前k个点,除了输入点自身以外,就是数据点i最近的k个近邻。代码实现如下:

public List<double> knnDistance(){

}

当我们得到k邻近的点位置后,创建一个knn函数,它包括两个输入,分别为一个数据框和参数k,这个函数会为数据框中的每一个点都做出预测并返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值