你真的了解K-近邻算法(KNN算法)吗?

250 阅读1分钟

K-近邻算法讲解

一、KNN算法概念

KNN算法是机器学习里面一个比较经典的算法,

定义:如果一个样本在特征空间中的K个最相似(即特征空间中最近邻)的样本中的大多数属于某一类别,则该样本也属于这个类别

距离公式:两个样本的距离可以通过如下公式计算,又叫欧式距离

微信图片_20220913161154.png

如图所示:欧式距离的原理和三角形的勾股定理有点相似

二维平面上点a(x1,y2)和b(x2,y2)间的欧式距离:

d4af668589280442755d7f4213e893ce.png

三维平面上点a(x1,y2)和b(x2,y2)间的欧式距离:

abb8de44195423709dfe3deecff2338f.png

n维平面上点a(x1,y2)和b(x2,y2)间的欧式距离:

436fd7acf7aff40f9522389b3f8906f8 (1).png

二、KNN算法流程总结:

1.计算已知类别数据集中的点与当前点之间的距离

2.按距离递增次序排序

3.选取与当前点距离最小的K个点

4.统计前K个点所在的类别出现的频率

5,返回前K个点出现频率最高的类别作为当前点的预测分类

三、K近邻算法api的使用

1.Scikit-learn 工具

安装: pip install scikit-learn==0.19.1

2.K近邻算法API

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)

    n_neighbors: int 可选 默认=5 查询默认使用的邻居数

3.实例:

from sklearn.neighbors import KNeighborsClassifier 
# 1.构造数据 
x = [[1],[2],[10],[20]] 
y = [0,0,1,1] 
# 2.模型训练 
# 实例化一个估计器对象 
estimator = KNeighborsClassifier(n_neighbors=1) 
# 调用fit方法,进行训练 
estimator.fit(x,y) 
#数据预测 
ret = estimator.predict([[100]]) 
print(ret)