KNN可视化
今天的博客主要介绍KNN算法以及其可视化的实现
一.KNN算法简介
KNN,即K近邻法(k-nearst neighbors),所谓的k最近邻,就是指最接近的k个邻居(数据),即每个样本都可以由它的K个邻居来表达。kNN算法的核心思想是,在一个含未知样本的空间,可以根据离这个样本最邻近的k个样本的数据类型来确定样本的数据类型。在scikit-learn 中,与近邻法这一大类相关的类库都在sklearn.neighbors包之中。其中分类器有KNN分类树KNeighborsClassifier、限定半径最近邻分类树的类RadiusNeighborsClassifier以及最近质心分类算法NearestCentroid等等。前两种分类算法中,scikit-learn实现两个不同的最近邻分类器:KNeighborsClassifier基于每个查询点的k个最近邻点实现学习,其中k是用户指定的最近邻数量。 RadiusNeighborsClassifier基于每个训练点的固定半径r内的最近邻搜索实现学习,其中r是用户指定的半径浮点值。关于这两种分类器的差别可以参考KNN算法的KD树和球树进行了解。
二.Python可视化实现KNN算法
这里通过python的绘图工具Matplotlib包可视化实现机器学习中的KNN算法。 需要提前安装python的Numpy和Matplotlib包。 KNN–最近邻分类算法,算法逻辑比较简单,思路如下:
1.设一待分类数据iData,先计算其到已标记数据集中每个数据的距离;
2.然后根据离iData最近的k个数据的分类,出现次数最多的类别定为iData的分类。
三.实现代码及结果
1.实现代码如下:
下面的代码主要是随机生成两个不同数据集数据集,其中normal为两个正态分布数据集,ring为正态分布且环绕状分布的数据集。
2.实验结果如下:
n=200,k=3时:
n=200,k=9时:
所以当k较小时,分类数据点的效果就越准确。