时间:2021-05-22
本文实例为大家分享了Python KNN分类算法的具体代码,供大家参考,具体内容如下
KNN分类算法应该算得上是机器学习中最简单的分类算法了,所谓KNN即为K-NearestNeighbor(K个最邻近样本节点)。在进行分类之前KNN分类器会读取较多数量带有分类标签的样本数据作为分类的参照数据,当它对类别未知的样本进行分类时,会计算当前样本与所有参照样本的差异大小;该差异大小是通过数据点在样本特征的多维度空间中的距离来进行衡量的,也就是说,如果两个样本点在在其特征数据多维度空间中的距离越近,则这两个样本点之间的差异就越小,这两个样本点属于同一类别的可能性就越大。KNN分类算法利用这一基本的认知,通过计算待预测样本点与参照样本空间中所有的样本的距离,并找到K个距离该样本点最近的参照样本点,统计出这最邻近的K个样本点中占比数量最多的类别,并将该类别作为预测结果。
KNN的模型十分简单,没有涉及到模型的训练,每一次预测都需要计算该点与所有已知点的距离,因此随着参照样本集的数量增加,KNN分类器的计算开销也会呈比例增加,并且KNN并不适合数量很少的样本集。并且KNN提出之后,后续很多人提出了很多改进的算法,分别从提高算法速率和提高算法准确率两个方向,但是都是基于“距离越近,相似的可能性越大”的原则。这里利用Python实现了KNN最原始版本的算法,数据集使用的是机器学习课程中使用得非常多的莺尾花数据集,同时我在原数据集的基础上向数据集中添加了少量的噪声数据,测试KNN算法的鲁棒性。
数据集用得是莺尾花数据集,下载地址。
数据集包含90个数据(训练集),分为2类,每类45个数据,每个数据4个属性
Sepal.Length(花萼长度),单位是cm;
Sepal.Width(花萼宽度),单位是cm;
Petal.Length(花瓣长度),单位是cm;
Petal.Width(花瓣宽度),单位是cm;
分类种类: Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾)
之前主打C++,近来才学的Python,今天想拿实现KNN来练练手,下面上代码:
测试集中11个待测样本点的分类结果:
In k nearest neighborhoods:class: Iris-setosa count: 20result: Iris-setosaIn k nearest neighborhoods:class: Iris-setosa count: 20result: Iris-setosaIn k nearest neighborhoods:class: Iris-setosa count: 20result: Iris-setosaIn k nearest neighborhoods:class: Iris-setosa count: 20result: Iris-setosaIn k nearest neighborhoods:class: Iris-setosa count: 20result: Iris-setosaIn k nearest neighborhoods:class: Iris-versicolor count: 20result: Iris-versicolorIn k nearest neighborhoods:class: Iris-versicolor count: 20result: Iris-versicolorIn k nearest neighborhoods:class: Iris-versicolor count: 20result: Iris-versicolorIn k nearest neighborhoods:class: Iris-versicolor count: 20result: Iris-versicolorIn k nearest neighborhoods:class: Iris-versicolor count: 20result: Iris-versicolorIn k nearest neighborhoods:class: Iris-setosa count: 18class: Iris-versicolor count: 2result: Iris-setosacorrect predicting ratio 0.909090909091KNN中对距离的计算有很多种方法,不同的方法适用于不同的数据集,该代码中只实现了欧拉距离和曼哈顿距离两种计算方式;测试集中的数据是从原数据集中抽离出来的,数据量不是很大,结果并不能很好地体现KNN的性能,所以程序运行结果仅供参考。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前面文章分别简单介绍了线性回归,逻辑回归,贝叶斯分类,并且用python简单实现。这篇文章介绍更简单的knn,k-近邻算法(kNN,k-NearestNeigh
本文实例为大家分享了python实现knn算法的具体代码,供大家参考,具体内容如下knn算法描述对需要分类的点依次执行以下操作:1.计算已知类别数据集中每个点与
KNN(K-Nearest-NeighboursClassiflication)分类算法,供大家参考,具体内容如下最简单的分类算法,易于理解和实现实现步骤:通过
kNN(k-nearestneighbor)是一种基本的分类与回归的算法。这里我们先只讨论分类中的kNN算法。k邻近算法的输入为实例的特征向量,对对应于特征空间
我简单的绘制了一下排序算法的分类,蓝色字体的排序算法是我们用python3实现的,也是比较常用的排序算法。Python3常用排序算法1、Python3冒泡排序—