机器学习实战第1天:鸢尾花分类任务

news2024/7/2 4:04:58

专栏介绍

欢迎订阅专栏——机器学习实战

机器学习实战_Nowl的博客-CSDN博客

纸上得来终觉浅

本专栏项目将着重于解决各类实际机器学习问题,带你上手各种场景的实际问题

数据集可以在我的资源中找到,也可以自行搜索

文中导入数据集的路径要改成自己的哦!!!

不了解机器学习基础的可以阅读专栏

机器学习_Nowl的博客-CSDN博客

文章目录

一、任务描述

二、数据集描述

三、主要代码

主要代码库的说明与导入方法

数据预处理

模型训练

模型预测与性能评估

除数据预处理外的完整代码

四、本章总结


 一、任务描述

鸢尾花分类任务是一个经典的机器学习问题,通常用于演示和测试分类算法的性能。该任务的目标是根据鸢尾花的特征将其分为三个不同的品种,即山鸢尾(Setosa)、变色鸢尾(Versicolor)和维吉尼亚鸢尾(Virginica)。这个任务是一个多类别分类问题,其中每个样本都属于三个可能的类别之一。


二、数据集描述

鸢尾花分类任务使用的数据集通常是著名的鸢尾花数据集(Iris dataset)。该数据集包含了150个鸢尾花样本,每个样本有四个特征:萼片长度(Sepal Length)、萼片宽度(Sepal Width)、花瓣长度(Petal Length)和花瓣宽度(Petal Width)。每个样本还标有其所属的品种。


三、主要代码

(1)主要代码库的说明与导入方法

  1. pandas (import pandas as pd):

    Pandas是一个用于数据处理和分析的强大库,提供了数据结构(如DataFrame和Series)和数据操作工具,使得在Python中进行数据清理、转换和分析变得更加方便。
  2. matplotlib.pyplot (import matplotlib.pyplot as plt):

    Matplotlib是一个用于绘制图表和可视化数据的2D绘图库。pyplot是Matplotlib的子模块,提供了类似于MATLAB的绘图接口,用于创建图表、直方图、散点图等。
  3. sklearn.model_selection (from sklearn.model_selection import train_test_split):

    train_test_split是scikit-learn中用于划分数据集为训练集和测试集的函数。它能够随机将数据划分为两个子集,是机器学习中常用的数据准备步骤之一。
  4. sklearn.svm (from sklearn import svm):

    Scikit-learn中的svm模块提供了支持向量机(SVM)算法的实现,包括用于分类和回归的支持向量分类器(SVC)和支持向量回归器(SVR)等。
  5. sklearn.metrics (from sklearn import metrics):

    metrics模块包含了许多用于评估模型性能的指标,例如准确性、精确度、召回率、F1分数等。这些指标可用于评估分类、回归和聚类等任务的模型性能。

(2)数据预处理

1.查看数据集基本情况

# 导入必要的库
import pandas as pd


# 从CSV文件读取鸢尾花数据集
iris = pd.read_csv("datasets/iris.csv")

# 查看数据集大小
print(iris.shape)

可以看到数据集为150行,6列的数据集

2.特征工程

我们可以绘制图像来观察数据特征的关系

# 导入必要的库
import pandas as pd
import matplotlib.pyplot as plt

# 从CSV文件读取鸢尾花数据集
iris = pd.read_csv("datasets/iris.csv")

# 绘制散点图,显示鸢尾花的萼片长度与萼片宽度,根据不同的品种用不同的颜色标识
plt.scatter(iris[iris.Species == 'Iris-setosa']["SepalLengthCm"], iris[iris.Species == 'Iris-setosa']["SepalWidthCm"], color="red", label="Setosa")
plt.scatter(iris[iris.Species == 'Iris-versicolor']["SepalLengthCm"], iris[iris.Species == 'Iris-versicolor']["SepalWidthCm"], color="green", label="Versicolor")
plt.scatter(iris[iris.Species == 'Iris-virginica']["SepalLengthCm"], iris[iris.Species == 'Iris-virginica']["SepalWidthCm"], color="blue", label="Virginica")

# 显示图例
plt.legend()

# 设置图表标题和轴标签
plt.title('Scatter Plot of Sepal Length vs Sepal Width for Iris Flowers')
plt.xlabel('Sepal Length (cm)')
plt.ylabel('Sepal Width (cm)')

# 显示图形
plt.show()

绘制花萼长与宽的关系图,我们发现蓝色和绿色的点混在一起,这就代表着这两个特征不能很好地区别鸢尾花的种类


# 绘制散点图,显示鸢尾花的花瓣长度与花瓣宽度,根据不同的品种用不同的颜色标识
plt.scatter(iris[iris.Species == 'Iris-setosa']["PetalLengthCm"], iris[iris.Species == 'Iris-setosa']["PetalWidthCm"], color="red", label="Setosa")
plt.scatter(iris[iris.Species == 'Iris-versicolor']["PetalLengthCm"], iris[iris.Species == 'Iris-versicolor']["PetalWidthCm"], color="green", label="Versicolor")
plt.scatter(iris[iris.Species == 'Iris-virginica']["PetalLengthCm"], iris[iris.Species == 'Iris-virginica']["PetalWidthCm"], color="blue", label="Virginica")

绘制花瓣长与宽的关系图,我们发现不同颜色的点基本上被区分在了不同的区域,这很好,让我们用这两个特征来进行模型训练吧。


(3)模型训练

在这里我们使用svm分类模型来训练

# 导入必要的库
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn import svm


# 从CSV文件读取鸢尾花数据集
iris = pd.read_csv("datasets/iris.csv")

# 将数据集划分为训练集和测试集,测试集占总数据的20%
train, test = train_test_split(iris, test_size=0.2)

# 提取训练集和测试集的特征和标签
train_x = train[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']]
train_y = train.Species
test_x = test[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']]
test_y = test.Species

# 创建支持向量机(SVM)分类器模型
model = svm.SVC()

# 在训练集上拟合SVM模型
model.fit(train_x, train_y)

(4)模型预测与性能评估

评估模型的性能

from sklearn import metrics


# 使用训练好的模型对测试集进行预测
prediction = model.predict(test_x)

# 打印SVM模型的准确性
print('The accuracy of the SVM is:', metrics.accuracy_score(prediction, test_y))

结果是1.0,这代表在测试集上的预测百分百正确,这是由于数据集较小,并且特征较少的原因,我们将在之后遇到更加复杂的情况


(5)除数据预处理外的完整代码

# 导入必要的库
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn import metrics

# 从CSV文件读取鸢尾花数据集
iris = pd.read_csv("datasets/iris.csv")

# 将数据集划分为训练集和测试集,测试集占总数据的20%
train, test = train_test_split(iris, test_size=0.2)

# 提取训练集和测试集的特征和标签
train_x = train[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']]
train_y = train.Species
test_x = test[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']]
test_y = test.Species

# 创建支持向量机(SVM)分类器模型
model = svm.SVC()

# 在训练集上拟合SVM模型
model.fit(train_x, train_y)

# 使用训练好的模型对测试集进行预测
prediction = model.predict(test_x)

# 打印SVM模型的准确性
print('The accuracy of the SVM is:', metrics.accuracy_score(prediction, test_y))



四、本章总结

  • 如何查看数据集的大小
  • 基本的探索数据之间关系的方法
  • 对数据集进行划分的方法
  • 基本的模型训练
  • 基本的模型评估方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1238967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大图书馆 #9 《流计算系统图解》书评

上周,我收到清华大学出版社编辑寄来的新书《流计算系统图解》。趁着周末的功夫,我快速浏览了本书的主要内容。一句话评价:值得一读,尤其是对开始开发流计算任务或系统一到两年,初步实现过一些功能或作业,但…

【LeetCode刷题】-- 29.两数相除

29.两数相除 思路: class Solution {public int divide(int dividend, int divisor) {//考察被除数为最小值的情况if(dividend Integer.MIN_VALUE){//被除数为最小值,除数是1,返回最小值if(divisor 1){return Integer.MIN_VALUE;}//除数是-…

Java注解(Annotation)的基本知识

Java注解(Annotation)的基本知识 此文的目的只在于了解的注解的基本知识,知道注解的一些概念,使能够看懂注解的使用。 注解概述 Java 注解(Annotation)又称 Java 标注,使 JDK5.0 引入的一种注释机制。Java 语言中的…

ChatGPT 也并非万能,品牌如何搭上 AIGC「快班车」

内容即产品的时代,所见即所得,所得甚至超越所见。 无论是在公域的电商平台、社交媒体,还是品牌私域的官网、社群、小程序,品牌如果想与用户发生连接,内容永远是最前置的第一要素。 01 当内容被消费过,就…

PC访问华为昇腾开发板的摸索过程

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 最近要折腾华为昇腾开发板(官方名称叫:Atlas 200I DK)。先是按照官方教程折腾:Atlas200DK环境部署。我发现…

【bug 回顾】上传图片超时

测试 bug 问题分析 - 上传图片超时 最近在测试上遇到一个莫名奇妙的问题,最后也没有得到具体是哪块的原因,看各位大佬有没有思路?? 一 、背景 现在我们有三台服务器,用来布两套环境。其中另外一台服务器3配置的 tom…

邦永PM2项目管理系统 SQL注入漏洞复现

0x01 产品简介 邦永PM2项目管理系统科学地将项目管理思想和方法和谐、统一,使得长期以来困扰项目管理工作者的工期、进度、投资和成本情况无法整体动态管理的问题得到了全面而彻底的解决。 0x02 漏洞概述 邦永科技PM2项目管理平台Global_UserLogin.aspx接口处未对用…

打不开clickonce问题解决过程

1.用户电脑user文件夹下有xx和xx.1两个账户,原先安装在xx账户下,后修了电脑原数据保留在xx.1,新创建XX,之后clickonce就打不开了表现为没有反应,,删除注册表和appdata都只能正常安装,但是不能打开,没有任何报错,发现在我的电脑下打开有这样的提示,,在用户电脑上没有 尝试通过修…

解决ESP32内部RAM内存不足的问题

一,为什么需要外部RAM ESP32有520kB的内部RAM空间可以使用,这对于一般的情况是够用的,但是如果设备需要涉及音频或者显示图像等处理时,需要更大的内存空间来处理这些数据。ESP32支持扩展外部RAM,其实乐鑫已经在其ESP32…

FPGA设计时序约束九、others类约束之Group Path

目录 一、序言 二、Group Path 2.1 基本概念 2.2 设置界面 2.3 命令语法 2.4 命令示例 三、工程示例 四、参考文件 一、序言 在Vivado的时序约束窗口中,存在一类特殊的约束,划分在others目录下,可用于设置忽略或修改默认的时序路径分…

轻量级压测工具Apache Bench实战

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

【考研数学】数学一“背诵”手册(一)| 高数部分(2)

文章目录 引言一、高数级数空间解析几何球坐标变换公式零碎公式 写在最后 引言 高数一篇文章还是写不太下,再分一些到这里来吧 一、高数 级数 阿贝尔定理:若级数 ∑ a n x n \sum a_nx^n ∑an​xn 当 x x 0 xx_0 xx0​ 时收敛,则适合不…

HCIA-Datacom跟官方路线学习

通过两次更换策略。最后找到最终的学习方案,华为ICT官网有对这个路线的学习,hcia基础有这个学习路线,hcip也有目录路线。所以,最后制定学习路线,是根据这个认证的路线进行学习了: 官网课程:课程…

马斯克震撼演讲:我想创立一个新世界

目录 1拼多多杀入大模型领域:年薪百万招聘人才 2马斯克震撼演讲:我想创立一个新世界 3文心4.0上线首交答卷:百度2023Q3成色如何 1拼多多杀入大模型领域:年薪百万招聘人才 快科技11月22日消息,据国内媒体报道&#x…

阿里云跨账号建立局域网

最近有活动,和好友一并薅了下阿里云的羊毛。琢磨着两台机器组一个局域网,于是有了这个需求,把步骤记录一下: 假设两台机器叫A和B,我们开始进行建立和组网 1. 建立ECS 把A机器公共环境装好,然后使用《实例与…

OceanBase:集群常见操作

目录 1.查看 OBD 管理的集群列表 2.查看某个集群状态 3.启动 OceanBase 集群 4.连接 OceanBase 集群 5.停止运行中的集群 6.销毁已部署的集群 7.查看集群配置项 8.修改集群配置项 1.查看 OBD 管理的集群列表 obd cluster list 2.查看某个集群状态 obd cluster displa…

【喜报】云贝学员顺利通过OceanBase 数据库上机实验,OBCP证书到手了!!!

恭喜LIU同学历经2月,经过郭老师考前辅导顺利拿下OBCP证书! 考试形式 OBCP V3.0考试分为笔试考试和实验考试两部分。 笔试考试: 考试形式:线下考点考试(官网预约) 考试时长: 90分钟 题目一共66道题(从题库中随机抽取&#xff…

Instant Web API .Net Core Crack

Instant Web API .Net Core 是立即构建即时数据库 Web API,无需编码。在几分钟内生成您的 Web API,以更快地构建应用程序。使用 VS 2022 和 Entity Framework Core 为任何 MS SQL 数据库生成 Web API。 新功能 - 使用 Visual Studio 2022 为 PostgreSQL …

算法刷题-动态规划-1

算法刷题-动态规划-1 不同路径不同路径||方法一:方法二 第N个泰波那契数递归写法滚动数组 三步问题递归操作滚动数组 使用最小画法爬楼梯递归 解码方法方法一方法二:(大佬讲解) 不同路径 //机器人不同的路径进入到指定的地点 publ…

909-2015-T3

文章目录 1.原题2.算法思想2.1.求树的高度2.2.求路径 3.关键代码4.完整代码5.输出结果 1.原题 试编写算法,求给定二叉树上从根节点到叶子节点的一条路径长度等于树的深度减一的路径(即列出从根节点到该叶子节点的节点序列),若这样…