您的位置:首页 > 其它

机器学习之K近邻算法——1、kNN分类算法(基本原理)

2014-12-20 17:07 337 查看
运行环境(Win7):

1、下载python3.3.exe

2、在http://sourceforge.net/projects/numpy/files/中下载numpy-1.9.1-win32-superpack-python3.3.exe

kNN分类算法的基本原理:

给定训练集A和测试样本t,选择t与A距离最近的k个训练样本,选择这些训练样本中出现次数最多的标签作为测试样本t的新标签。

kNN分类算法的伪代码流程:

1、准备无标签测试数据:inX=[0,0]

2、准备样本数据(特征值):dataSet={[[1,1],[1,2],[0,0],[0,1]])

3、准备样本数据(标签/目标值): labels=[‘A’,‘A’,‘B’,‘B’]

4、计算已知样本数据中的每个点和当前测试点之间的距离

4.1、利用NumPy扩充数组函数tile来扩充测试数据,按照样本数据的行数扩充为:

diffMat=tile(inX,(4,1))={[[0,0],[0,0],[0,0],[0,0]]}

tile函数的简单用法如下:



4.2、利用欧式距离公式(如下),计算测试向量点和样本向量点之间的距离:



diffMat=tile(inX,(4,1))-dataSet #相减

sqDiffMat=diffMat**2 #平方

sqDistances=sqDiffMat.sum(axis=1) #axis=1表示行方向相加,即平方相加

distances=sqDistances**0.5 #开方

5、将距离的值按照从小到大进行升序排序

6、取距离最小的k个点的分类值

7、计算k个点中发生频率最高的标签

kNN分类算法的代码:





测试结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息