K-近邻算法(K-NN)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K-近邻算法(K-NN)相关的知识,希望对你有一定的参考价值。

参考技术A

给定一个训练数据集,对于新的输入实例, 根据这个实例最近的 k 个实例所属的类别来决定其属于哪一类 。所以相对于其它机器学习模型和算法,k 近邻总体上而言是一种非常简单的方法。

找到与该实例最近邻的实例,这里就涉及到如何找到,即在特征向量空间中,我们要采取 何种方式来对距离进行度量

距离的度量用在 k 近邻中我们也可以称之为 相似性度量 ,即特征空间中两个实例点相似程度的反映。在机器学习中,常用的距离度量方式包括欧式距离、曼哈顿距离、余弦距离以及切比雪夫距离等。 在 k 近邻算法中常用的距离度量方式是欧式距离,也即 L2 距离, L2 距离计算公式如下:

一般而言,k 值的大小对分类结果有着重大的影响。 当选择的 k 值较小的情况下,就相当于用较小的邻域中的训练实例进行预测,只有当与输入实例较近的训练实例才会对预测结果起作用。但与此同时预测结果会对实例点非常敏感,分类器抗噪能力较差,因而容易产生过拟合 ,所以一般而言,k 值的选择不宜过小。但如果选择较大的 k 值,就相当于在用较大邻域中的训练实例进行预测,但相应的分类误差也会增大,模型整体变得简单,会产生一定程度的欠拟合。所以一般而言,我们需要 采用交叉验证的方式来选择合适的 k 值

k 个实例的多数属于哪个类,明显是多数表决的归类规则。当然还可能使用其他规则,所以第三个关键就是 分类决策规则。

回归:k个实例该属性值的平均值

它是一个二叉树的数据结构,方便存储 K 维空间的数据

KNN 的计算过程是大量计算样本点之间的距离。为了减少计算距离次数,提升 KNN 的搜索效率,人们提出了 KD 树(K-Dimensional 的缩写)。KD 树是对数据点在 K 维空间中划分的一种数据结构。在 KD 树的构造中,每个节点都是 k 维数值点的二叉树。既然是二叉树,就可以采用二叉树的增删改查操作,这样就大大提升了搜索效率。

如果是做分类,你需要引用:from sklearn.neihbors import KNeighborsClassifier
如果是回归, 需要引用:from sklearn.neighbors import KNeighborsRegressor

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, weights=\'uniform\', algorithm=\'auto\', leaf_size=30, p=2, metric=\'minkowski\', metric_params=None, n_jobs=None, **kwargs)

以上是关于K-近邻算法(K-NN)的主要内容,如果未能解决你的问题,请参考以下文章

k近邻算法(k-nearest neighbor,k-NN)

转载K-NN算法 学习总结

转载用Scikit-Learn构建K-近邻算法,分类MNIST数据集

实验楼 1. k-近邻算法实现手写数字识别系统--《机器学习实战 》

K-近邻(KNN)算法

R语言非参数方法:使用核方法和K-NN(k近邻算法)分类预测心脏病数据