KNN算法

knn算法是一种监督学习的算法,用于解决分类问题。

对于训练集是已经知道类别标签的数据,而测试集是需要分类的数据。

通过计算训练数据中到一个测试样本最近的k个测试数据,这k个数据中类别最多的那个类作为这一个测试数据新的类别。

关于评价测试集与训练集最近或者最相似的方法:

1.最常用的是欧氏距离,通过计算欧氏距离的方法,在计算之前要进行归一化,以减少不同特征之间量纲的差距

2.余弦相识度,计算两个向量之间的余弦值,这个值在-1到 1之间,有时候可能要对求的余弦相识度求绝对值,因为两个向量是相反的方向,可能对类别无影响。

3.相关系数

4.曼哈顿距离:两个向量对于坐标差的绝对值的和

5.两个向量中对于坐标,差的绝对值的最大值

k值得选取:

过大,可能预测类别是训练集中类别数据量最多对应的类别

过小,可能不能代表要预测数据的类别,当这k个样本中有错误数据时候,预测类别受到影响

一般k的选取可以通过交叉验证来实现

当数据量比较大的时候,计算量将会很大

KD树自己还不是很了解的。

核心思想就是对数据进行划分到不同的区间

你可能感兴趣的:(KNN算法)