KNN算法在识别算法中是比较简单的。 举个例子很容易理解。 如果有9个人的话,手里拿着分别写着1到9的数字的卡片。
例如,假设第一个人有数字1,第二个人有数字2,第九个人有数字9。 那么,现在规定拥有数字1到3的3人是红队,4到6是黄队,7到9是蓝队
现在又来了一个人。 他有1到9的随机数。 他应该分成哪个队? 那个人说,那个还很难分,属于哪个区间就分成哪个队好呢?
话虽如此,但机器有点难,而且有各种各样的数据,有时无法一一分类。 有些事情是我们意想不到的。 例如,这个过来人拿了一把笨叉子,把卡搞错了,拿了一张写着10的卡来。 那台机器不是不能玩了吗!
此时KNN算法发挥作用。 它规定,把新来的人所拥有的数字和这些人所拥有的数字之差(即距离)与:进行比较,取差距最小的前k人。 就是看这个人拥有的数字离这九个人中哪个k人最近。 这个k人大多分成哪个队,他就分成哪个队?
例如设k为3,新来的人取数字4,这9个人取的1到9的数字中,前3个取与数字4最接近的数字,分别为:4、5、3。 这三个数中持四五张牌的人被黄队分开,只有持牌三的人被红队分开。 那么,这三个人中,最多能分到黄队的有两个人,因为新来的人会分到黄队。 同上,如果这个人有牌,数字是10的话,当然会分到蓝队。
那么,我们把这个算法标准化后写在了:上
对于未知类属性的数据集中的每个点,依次执行以下操作:
1 .计算已知类别数据集中的点与当前点之间的距离。
2 .按距离升序排序。
3 .选择距当前点距离最小的k个点。
4 .确定前k个点所在类别的出现频率。
5 .将出现前k个积分频率最高的类别作为当前点的预测分类返回。
通常,数据集内的点由特征向量表示,而特征向量是多维的。 点和点之间的距离要求向量之间的欧式距离。 欧式距离计算如下
两个n维相位量
和
欧式距离如下:
更多内容请关注微信公众号: IT部门说