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填充的数组;

 

 

 

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

欧几里得距离:

 

 

对邻居的选择:

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

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

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

  • 运行结果

  • 总结

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

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值