KNN算法的实现过程

机器学习算法:KNN分类算法

写文章的目的是为了巩固所学,和方便回顾查找。如有讲错的地方,欢迎指出,谢谢。

KNN算法介绍:
    KNN,k-NearestNeighborK 又称K最近邻
所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表,是一种分类算法,用于参考已知的数据,对未知实例的类别进行判断


算法流程:
将每个样本视作一个点
1. 载入数据集,对数据进行必要的预处理
2. 设置参数K,K最好选择奇数,因为后续进行归类的策略是少数服从多数,设置K为奇数的话总会有结果。
3. 计算待预测点与已知点之间的关系,这里的关系可以有多种方式来体现,常用如下:
  ①欧式距离(应用较广,其他及其算法也有广泛应用),其计算方法:
欧式距离
  ②余弦值
  ③相关度
  ④曼哈顿距离
  ⑤…
4. 之前确定了参数K,计算了待预测点与已知点之间的距离衡量,将计算的结果进行从小到大排序,取前K个点
5. 将待预测点归类为多数的那一个类别,这便是对于未知点的类别预测结果了。

算法优点:
1.简单,易于理解,易于实现,无需估计参数,无需训练;
2. 适合对稀有事件进行分类;
3.特别适合于多分类问题(multi-modal,对象具有多个类别标签), kNN比SVM的表现要好。

算法缺点:
  需要大量的空间来存储已知的实例,再一个是算法复杂度较高。


算法理解:
我们根据一张图来理解这个算法吧。
example
    未知点X延伸出的5个箭头,表示我们的K为5,也就是我们选取了5个已知点用于对X进行归类预测

特殊情况:
    对于未知点Y不使用算法,我们会将未知点Y归类为W1这一类,运行了算法后,会将Y归类为W2类,这明显是错误的归类结果。
    这是由于样本分布不平衡造成的。我们可以通过给计算后的距离加上权重来控制不同距离的点对结果的贡献程度,离未知点越近的,权重大,对结果贡献度大,反之离未知点远的,权重小,对结果的贡献度小。

以上就是本人对KNN算法的总结,如果有不当之处,或错误,还请指出,感激不尽

猜你喜欢

转载自blog.csdn.net/weixin_43084928/article/details/82504628
今日推荐