机器学习之K近邻算法——1、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函数的简单用法如下:

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

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分类算法的代码:

机器学习之K近邻算法——1、kNN分类算法(基本原理)_第2张图片

机器学习之K近邻算法——1、kNN分类算法(基本原理)_第3张图片

测试结果如下:







你可能感兴趣的:(机器学习)