KNN算法实现鸢尾花的分类

  • 题目

原生python实现knn分类算法,用鸢尾花数据集。

  • 题目分析

KNN算法:

  1. 准备数据:来源百度下载鸢尾花数据集,共150组数据,将数据分为训练数据和测试数据,训练数据为120组,测试数据为30组。(KNN算法中训练集与测试集的比例应为0.74:0.25)。
  2. 设置特征数据和标签:花萼长度、花萼宽度、花瓣长度、花瓣宽度作为特征数据,鸢尾花种类为标签
  3. 设置邻居个数
  4. 选择距离的计算方式(采用欧几里得距离)
  5. 遍历进行求解距离(测试数据与训练数据之间的距离)
  6. 对每个测试数据求得的距离数据进行排序,按照邻居个数进行选择邻居,即选择距离最小的几个邻居。
  7. 预测结果,与其真实类别进行比较,计算准确率
  • 算法设计

对数据的处理:

训练数据的处理:(测试数据同训练数据的处理方法)

对数据按行处理,去空格并按“,”将数据进行分割,前四列为特征数据,第五列为标签即鸢尾花的类别,使用了np.zeros(shape, dtype=float, order='C')返回:返回来一个给定形状和类型的用0填充的数组;

KNN算法实现鸢尾花的分类

 

 

 

利用欧几里得公式计算测试机与训练集函数之间的距离

欧几里得距离:

KNN算法实现鸢尾花的分类

 

 

对邻居的选择:

对每个测试数据求得的距离进行排序,选择距离最小的k 个邻居

KNN算法实现鸢尾花的分类

对邻居的预测类别进行分类,得出预测结果

KNN算法实现鸢尾花的分类

计算预测的正确率,即判断预测结果与实际类别是否相同

KNN算法实现鸢尾花的分类

  • 运行结果

KNN算法实现鸢尾花的分类

  • 总结

  这次编程首先学习了对文本文件的处理,文本的读入,对数据的处理在这块卡了很久,后来是在一个博客里面看到的文本数据的处理方式,将数据进行分割,了解到了zeros()函数,使用的很僵硬,数据处理结束就是对KNN算法的设计了,该算法主要是距离的求解方法和邻居个数的选择,在求解距离时复习了距离的求解方法,在此采用的欧几里得距离,使用sort()函数对距离进行排序,按距离最小选择邻居,进行预测类别和真实类别的比较得出准确率。在此次编程时还学习了python中函数的使用,将每一个功能分别用函数的方式进行呈现。