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

本文介绍了k近邻(kNN)分类算法的基本原理,包括算法流程和伪代码。通过实例展示了如何利用Python的NumPy库计算样本间的距离,并找出最近的k个邻居以确定测试样本的类别。最后,给出了kNN分类算法的实现和测试结果。

运行环境(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分类算法的代码:



测试结果如下:







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值