knn算法是一种监督学习的算法,用于解决分类问题。
对于训练集是已经知道类别标签的数据,而测试集是需要分类的数据。
通过计算训练数据中到一个测试样本最近的k个测试数据,这k个数据中类别最多的那个类作为这一个测试数据新的类别。
关于评价测试集与训练集最近或者最相似的方法:
1.最常用的是欧氏距离,通过计算欧氏距离的方法,在计算之前要进行归一化,以减少不同特征之间量纲的差距
2.余弦相识度,计算两个向量之间的余弦值,这个值在-1到 1之间,有时候可能要对求的余弦相识度求绝对值,因为两个向量是相反的方向,可能对类别无影响。
3.相关系数
4.曼哈顿距离:两个向量对于坐标差的绝对值的和
5.两个向量中对于坐标,差的绝对值的最大值
k值得选取:
过大,可能预测类别是训练集中类别数据量最多对应的类别
过小,可能不能代表要预测数据的类别,当这k个样本中有错误数据时候,预测类别受到影响
一般k的选取可以通过交叉验证来实现
当数据量比较大的时候,计算量将会很大
KD树自己还不是很了解的。
核心思想就是对数据进行划分到不同的区间