Python基于KNN算法怎么实现尾鸢花数据集分类

发布时间:2022-01-12 17:19:40 作者:iii
来源:亿速云 阅读:145

本文小编为大家详细介绍“Python基于KNN算法怎么实现尾鸢花数据集分类”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python基于KNN算法怎么实现尾鸢花数据集分类”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

KNN模型理论      
K最近邻分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
KNN方法虽然从原理上依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。
    
KNN算法流程      
1. 准备数据,对数据进行预处理;
2. 选用合适的数据结构存储训练数据和测试元组;
3. 设定参数;
4.维护一个大小为k的的按距离由大到小的优先级队列,用于存储最近邻训练元组。随机从训练元组中选取k个元组作为初始的最近邻元组,分别计算测试元组到这k个元组的距离,将训练元组标号和距离存入优先级队列;
5. 遍历训练元组集,计算当前训练元组与测试元组的距离,将所得距离L 与优先级队列中的最大距离Lmax;
6. 进行比较。若L>=Lmax,则舍弃该元组,遍历下一个元组。若L < Lmax,删除优先级队列中最大距离的元组,将当前训练元组存入优先级队列;
7. 遍历完毕,计算优先级队列中k 个元组的多数类,并将其作为测试元组的类别;
8. 测试元组集测试完毕后计算误差率,继续设定不同的k值重新进行训练,最后取误差率最小的k 值。
     
数据集准备      
Iris(鸢尾花)数据集是多重变量分析的数据集。数据集包含150行数据,分为3类,每类50行数据。每行数据包含4个属性:Sepal Length(花萼长度)、Sepal Width(花萼宽度)、Petal Length(花瓣长度)和Petal Width(花瓣宽度)。可通过这4个属性预测鸢尾花卉属于三个种类(Setosa,Versicolour,Virginica)中的哪一类。
     
数据预处理      

import pandas as pd              df = pd.read_csv('iris.csv')# 读入数据              df.columns = ['Sepal length', 'Sepal width', 'Petal length', 'Petal width', 'Species']          df.head()# 查看前5条数据   
数据集结果如下图所示:  
Python基于KNN算法怎么实现尾鸢花数据集分类
   df.describe()# 查看数据信息
对于数据集做描述,结果如下所示:
Python基于KNN算法怎么实现尾鸢花数据集分类        
           
K-最近邻算法            


 
   
   import numpy as np #使用K-近邻算法对鸢尾花数据进行交叉验证
      
    
    from sklearn.datasets import load_iris
      
    
    import matplotlib.pyplot as plt
   #下载数据集
      
    
    iris = load_iris()
      
    
    data = iris.data[:,:2]
      
    
    target = iris.target
      
    
    print (data.shape)#(150,2)
      
    
    print (data[:10])
      
    
    print (target[:10])
      
    
    label = np.array(target)
      
    
    index_0 = np.where(label==0)
      
    
    plt.scatter(data[index_0,0],data[index_0,1],marker='x',color = 'b',label = '0',s = 15)
      
    
    index_1 =np.where(label==1)
      
    
    plt.scatter(data[index_1,0],data[index_1,1],marker='o',color = 'r',label = '1',s = 15)
    
    
    index_2 =np.where(label==2)
      
    
    plt.scatter(data[index_2,0],data[index_2,1],marker='s',color = 'g',label = '2',s = 15)
      
    
    plt.xlabel('X1')
      
    
    plt.ylabel('X2')
      
    
    plt.legend(loc = 'upper left')
      
    
    plt.show()
Python基于KNN算法怎么实现尾鸢花数据集分类

读到这里,这篇“Python基于KNN算法怎么实现尾鸢花数据集分类”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. Python中怎么实现knn算法
  2. 原生python如何实现knn分类算法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

knn python

上一篇:怎样部署Tomcat服务器

下一篇:如何采用分段排查法诊断服务器性能

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》