K-近邻算法讲解
一、KNN算法概念
KNN算法是机器学习里面一个比较经典的算法,
定义:如果一个样本在特征空间中的K个最相似(即特征空间中最近邻)的样本中的大多数属于某一类别,则该样本也属于这个类别
距离公式:两个样本的距离可以通过如下公式计算,又叫欧式距离
如图所示:欧式距离的原理和三角形的勾股定理有点相似
二维平面上点a(x1,y2)和b(x2,y2)间的欧式距离:
三维平面上点a(x1,y2)和b(x2,y2)间的欧式距离:
n维平面上点a(x1,y2)和b(x2,y2)间的欧式距离:
二、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)