1. kNN思想简介
鲁迅曾经说过:“想要了解一个人,就去看看他的朋友”。
kNN(k-NearestNeighbor),也就是k最近邻算法。顾名思义,所谓K最近邻,就是k个最近的邻居的意思。也就是在数据集中,认为每个样本可以用离他最距离近的k个邻居来代表。
贴出一张从百度百科上找的一张图,我们可以直观地感受到这朴素的思想:我们要判断
是什么颜色的,找到与其距离最近的5个点,有4个是红色的,有1个是绿色的。因此我们认为是属于红色的集合
![](https://img.haomeiwen.com/i14330781/a086ccd162a6bec9.png)
2、kNN算法流程
通过理解算法思想,可以将其简化为“找邻居+投票”。K近邻法使用的模型,实际上是特征空间的划分。模型由三个基本要素决定:
距离度量
k值
分类决策规则
其中两个实例点之间的距离反映了相似程度。一般来说使用欧氏距离来计算。
梳理kNN算法流程如下:
计算测试对象到训练集中每个对象的距离
按照距离的远近排序,选取与当前测试对象最近的k的训练对象,作为该测试对象的邻居
统计这k个邻居的类别频次
k个邻居里频次最高的类别,即为测试对象的类
3、sklearn中的kNN
对于机器学习来说,其流程是:训练数据集 -> 机器学习算法 -fit-> 模型 输入样例 -> 模型 -predict-> 输出结果
from sklearn.neighbors import KNeighborsClassifier
# 创建kNN_classifier实例
kNN_classifier = KNeighborsClassifier(n_neighbors=6)
# kNN_classifier做一遍fit(拟合)的过程,没有返回值,模型就存储在kNN_classifier实例kNN_classifier.fit(X_train,y_train)
# kNN进行预测predict,需要传入一个矩阵,而不能是一个数组。reshape()成一个二维数组,第一个参数是1表示只有一个数据,第二个参数-1,numpy自动决定第二维度有多少
y_predict = kNN_classifier.predict(x.reshape(1,-1))
y_predict
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=1, n_neighbors=6, p=2, weights='uniform')
网友评论