本篇博客介绍K近邻算法:没有涉及到KD树等复杂逻辑,只涉及距离计算,适合小白入门,博客结合文本和代码更容易理解。文末会放上全部代码,方便大家一起学习。
本篇博客有自己手写的KNN,也有介绍如何使用sklearn中的KNN
如果有朋友想要了解KD树,可以看我另一篇关于KNN的博客。链接:https://blog.csdn.net/hongguihuang/article/details/104417825
1 K近邻算法简介
K近邻法是一种基本分类与回归方法。
K近邻法的输入为实例的特征向量(特征空间的点),输出为实例的类别,可以取多类。
2 K近邻算法
用自己的话说就是:
①给定一个训练数据集,训练数据集实例的类别已定。
②对新的输入实例,找出新实例K个最近邻的训练点,根据K个最近邻训练实例的类别,通过多数表决等方式进行预测。
3 思路
- 1.计算预测点到到每个样本的距离(采用欧氏距离)
- 2距离索引值按升序排序
- 3.取K个距离最小的Y
- 4.统计K个距离最小值中同一类最多的数
导入包
import numpy as np
import sklearn import datasets
from collection import Counter
1.计算测试点到样本的距离
distances = [sqrt(sum((x_train - x)**2)) for x_train in X_train]
2.距离按升序排列
nearest = np.argsort(distances)
3.取前K个距离的y值
topk_y = [y_train