机器学习笔记之KNN算法实现
- 算法原理
- 算法特点
- 算法实现
原理讲解
kNN又称为k-近邻算法。是一种简单高效的分类算法。
主要原理
存在一个样本数据集合,也称作训练样本集。并且样本集中每个数据都存在标签,即我么知道样本集中每个数据的真实分类。该算法的一个典型特点就是不用生成一个分类模型。一个输入的训练数据即是一个模型。
之后,输入测试数据。对于每个测试数据来说,他的分类结果是不明确的。需要通过算法来判别。这里KNN采用的方法是通过计算输入元组和训练数据中的所有元组的距离(对于数值型属性可以采用欧式距离,编码型可以参考采用汉明距离),然后取距离最小的k个元组(一般来说k是人工输入的一个值,一般来说k取小于20的值比较合适)。判断这k个元组中占比最多的那个类别,然后将这个类别标签作为输入元组类别的一个预测值。
算法特点
优点:精度高, 对于异常值不敏感,无数据输入假定
缺点:计算复杂度高,这是由于算法本身特点决定的,每做一次判断都需要遍历计算遍训练集时间复杂度
O(n2)
O
(
n
2
)
。空间复杂度也相对比较高
适用数据范围:数值型和标称型
算法实现
实现过程这里主要是用python进行实现的,进行测试的时候采用的是42000条记录的测试集和42000条记录的训练集合。整个运行过程相对比较长。具体实现过程参考GitHub:https://github.com/PL97/KNN
如有任何错误欢迎指正