手把手教你学Python之鸢尾花分类(scikit-learn的应用)

目录

1、鸢尾花分类问题介绍

2、自主实现鸢尾花分类

3、调用scikit-learn库实现鸢尾花分类


1、鸢尾花分类问题介绍

问题描述:一名植物学爱好者对发现的鸢尾花的品种很感兴趣。他收集了每朵鸢尾花的一些测量数据:花瓣的长度和宽度以及花萼的长度和宽度。他还有一些鸢尾花分类的测量数据,这些花之前已经被植物学专家鉴定为属于 setosaversicolorvirginica 三个品种之一。对于这些测量数据,他可以确定每朵鸢尾花所属的品种。我们的目标是构建一个机器学习模型,可以从这些已知品种的鸢尾花测量数据中进行学习,从而能够预测新鸢尾花的品种

鸢尾花数据集(部分数据效果如下)介绍:

数据量:150条测量数据包含3种类别每种类别50个样本

每条数据包含5项基本信息:花瓣的长度花瓣的宽度花萼的长度花萼的宽度以及鸢尾花的类别

2、自主实现鸢尾花分类

(1)读取数据,获取样本特征数据和标签数据。鸢尾花数据默认存放在txt文本中,其中,第1行为标题,第1列为样本序号,所以需要跳过标题行和序号列。每个样本单独存放在一行,不同的数据部分通过空格隔开。关键代码参考如下。

    (2)数据可视化分析。以图表的形式观察鸢尾花花瓣长度和宽度鸢尾花品种的关系、鸢尾花花萼长度和宽度鸢尾花品种的关系。关键代码如下。

    生成的数据图效果如下,通过图可以观察到花瓣的长度和宽度与鸢尾花品种的相关性更强。

(3)K近邻算法(KNN)KNN算法是数据挖掘分类技术中最简单的方法之一,思想是每个样本都可以用它最接近的k个邻居来代表。如果一个样本在特征空间中的k个最邻近的样本中的大多数属于某一个类别,则该样本也划分为这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别例如下图中,绿色圆圈表示待测样本类别,当k取3时,有2个红色三角形1个蓝色正方形,因此类型与红色三角形相同;当k取5时,有2个红色三角形3个蓝色正方形,因此类型与蓝色正方形相同k的取值会直接影响最终的结果

    对于K近邻算法而言,最关键的就是计算待测点和其它样本之间的距离,然后找到最邻近的K个邻居,统计这些邻居中各种类型的个数,获取个数最多的类型。关键代码如下。

将训练集中的数据随机打乱,然后将最后一条作为验证数据,之前的所有数据都作为训练数据。通过训练数据来预测验证数据的类型,然后和真正的类型进行比较。关键代码参考如下。

调用该方法100次,观察结果。

3、调用scikit-learn库实现鸢尾花分类

主要流程为:

  1. 加载数据
  2. 划分训练集和测试集
  3. 创建分类器
  4. 拟合训练数据
  5. 预测结果
  6. 比较预测结果与真实结果

关键代码参考如下:

相关资源和代码可关注微信公众号:Python资源分享,回复 flower 即可获取,详细的视频讲解可查看 CSDN学院 里的手把手教你学Python系列视频:https://edu.csdn.net/lecturer/5686。   欢迎加入QQ群一起学习交流:858228002 

  • 20
    点赞
  • 193
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高成珍

前行路上与你相伴!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值