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较小时,分类数据点的效果就越准确。

 

 

 

 

 

posted @ 2019-05-19 21:34  悠小悠  阅读(1097)  评论(0编辑  收藏  举报