刚接触machine learning,本着对接触到算法都自己编写一遍以帮助理解的理念,今日便将学习第一个算法(knn分类算法)的过程在这里记录下来,与大家分享,错误之处还希望大家指正哈。
k近邻分类算法应该是一个比较基础的算法了,当初接触spectral clustering 时就用过它,但当时是直接调用的,自己并没有去认真的编写。废话不多讲了,下面是正文。
Knn近邻算法的基本原理是利用当前数据x与数据样本y中的距离最近的k个样本记录,依据这k个样本记录中大多数所属的类别来确定数据x的类别,其中数据x与数据样本需要有相同数目的属性,即列数相同(一般矩阵的列表示属性,一列代表一个属性,矩阵的行则一般代表数据样本的一组属性观测值)。比如数据x有x1,x2,x3...xn个属性,则样本数据y也有n个属性相对应,而且数据样本y中的每行已经被正确分类。
下面粘贴 在matlab上实现的代码
比较笨,这么短的代码撸了一个下午。代码中计算距离使用的是欧式距离,确定待分类数据的类别采用的是 k个最近邻居中大多数属于哪一个类,则判定待分类数据的类别,是不是感觉很粗糙? 对啊,我也是这么觉得的,下面我们来粗略分析下。
suppose训练数据共有100个记录,共分为2类,