雅乐网

计算机技术、学习成长

数学 » 机器学习 » 机器学习实战1——kNN算法

机器学习实战1——kNN算法

kNN 是 k-NearestNeighbor 的缩写,中文叫做k-临近算法。它的思想是通过一个点最邻接的k个点的分类来预测这个点的分类。

如下图所示,k=3时,预测问号是属于○还是△ 。在距离要预测样本最近的三个点中,有2个是三角,1个时圆,由此预测该样本属于三角分类。

距离有很多种定义,最常用的是欧氏距离:

有n个维度的两个点A和B之间的欧氏距离是

$$d = \sqrt {\sum_{i=0}^{n-1} {(A_i – B_i)^2}}$$

如果不使用特殊的优化方法,计算时需要针对新的样本和每一个训练样本计算距离,然后选出距离最近的top k个,这样时间复杂度非常大。

python代码

testVec 是一个 测试数据,大小为 1行 n列。

trainMat是所有的训练数据,m行表示m个样本,n列是n个特征。labels共m个元素对应m个样本所属的分类。

k是对测试数据选择k个最相近的训练样本来进行预测。

先使用tile函数把测试数据的向量复制m份,构成一个m*n的矩阵,这样两个矩阵相乘可以得到测试样本和每个训练样本的距离。

 

如果文章对你有帮助,欢迎点赞或打赏(金额不限)。你的打赏将全部用于支付网站服务器费用和提高网站文章质量,谢谢支持。

版权声明:

本文由 原创,商业转载请联系作者获得授权。
非商业转载请注明作者 雅乐网 ,并附带本文链接:
http://www.yalewoo.com/machine_learning_practice_1_knn.html

上一篇:

下一篇:

文章《机器学习实战1——kNN算法》共有1条评论:

  1. 学长好厉害!膜拜!

我要评论

验证码*: 9 + 9 =