K - 邻近算法
1. 算法描述
K-邻近算法(K Nearest Neighbor, KNN)分类算法,是最简单的机器学习算法。
工作原理:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数据与所属分类对应的关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最邻近)的分类标签。一般来说,我们只选择样本数据集中前k个最相似数据,这就是k-邻近算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的分类。
简单的说,k-邻近算法采用测量不同特征值之间的距离方法进行分类。
2. K - 邻近算法的一般流程
(1)收集数据:可以使用任何方法。比如:通用数据库,网络爬虫等。
(2)准备数据:距离计算所需要的数值,最好是结构化的数据格式。
距离计算一般选择欧氏距离:
d = [(xA0 - xB0)2 + (xA1 - xB1)2]1/2
注:计算特征之间的距离时,要将每个特征都归一化,以消除数据差异对结果的影响。公式如下:
newValue = (oldValue - min) / (max - min)
其中min和max分别是数据集中的最小特征值和最大特征值。
(3)分析数据:可以使用任意方法。比如:使用Matplotlib制作原始数据的散点图,以发现特征之间的关系。
(4)训练算法:此步骤不适用于k-邻近算法。
(5)测试算法:计算错误率。
对于分类器来说,错误率就是分类器给出错误结果的次数除以测试数据的总数。
(6)使用算法:首先需要输入样本数据和结构化的输出结果,然后运行k-邻近算法判定输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理。
3. Python平台
(1)使用Matplotlib创建散点图
import matplotlib
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(datingDataMat[:,1], datingDataMat[:,2])