【Pytorch】新手入门:基于sklearn实现鸢尾花数据集的加载

【Pytorch】新手入门:基于sklearn实现鸢尾花数据集的加载

在这里插入图片描述

🌈 个人主页:高斯小哥
🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您的订阅和支持~
💡 创作高质量博文(平均质量分92+),分享更多关于深度学习、PyTorch、Python领域的优质内容!(希望得到您的关注~)


🌵文章目录🌵

  • 🌸一、鸢尾花数据集简介
  • 📚二、基于Python加载鸢尾花数据集
  • 🎨三、探索鸢尾花数据集
  • 🔍四、使用鸢尾花数据集进行模型训练
  • 🛠️五、优化模型性能
  • 🛠️六、使用鸢尾花数据集进行模型选择
  • 📚七、总结与进一步学习

🌸一、鸢尾花数据集简介

  鸢(yuān)尾花数据集(Iris dataset)是机器学习和统计学中常用的一个经典数据集,主要用于分类任务。它包含了三类不同的鸢尾花(Setosa、Versicolour和Virginica)的四个特征,分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度。这些特征都是连续型数值变量,使得它非常适合用于演示和测试分类算法。

  这个数据集非常受欢迎,因为它的简单性和易理解性。同时,由于其特征的多样性和类别之间的可区分性,它成为了很多机器学习初学者和研究者的首选数据集。

📚二、基于Python加载鸢尾花数据集

  在Python中,我们可以使用sklearn库中的datasets模块来轻松加载鸢尾花数据集。sklearn是一个强大的机器学习库,提供了大量的数据集和工具,方便我们进行机器学习和数据分析。

下面是一个简单的示例代码,演示如何加载鸢尾花数据集:

from sklearn import datasets# 加载鸢尾花数据集
iris = datasets.load_iris()# 打印数据集描述
# print(iris.DESCR) # 可选# 获取特征数据
X = iris.data# 获取目标标签
y = iris.target# 打印特征数据的前5行
print("特征数据前5行:\n", X[:5])# 打印目标标签的前5个
print("目标标签前5个:\n", y[:5])# 获取特征名称
feature_names = iris.feature_names
print("特征名称:\n", feature_names)# 获取目标标签的名称
target_names = iris.target_names
print("目标标签名称:\n", target_names)

输出:

特征数据前5行:[[5.1 3.5 1.4 0.2][4.9 3.  1.4 0.2][4.7 3.2 1.3 0.2][4.6 3.1 1.5 0.2][5.  3.6 1.4 0.2]]
目标标签前5个:[0 0 0 0 0]
特征名称:['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
目标标签名称:['setosa' 'versicolor' 'virginica']

在这个例子中,我们首先导入了sklearn.datasets模块,然后调用load_iris()函数加载鸢尾花数据集。加载后的数据集存储在iris对象中,我们可以通过这个对象访问数据集的各个部分。

通过iris.data,我们可以获取特征数据,它是一个形状为(150, 4)的NumPy数组,其中每一行代表一个样本,每一列代表一个特征。

通过iris.target,我们可以获取目标标签,它是一个长度为150的一维数组,其中每个元素表示对应样本的类别标签(0、1或2)。

此外,iris.DESCR包含了数据集的详细描述,iris.feature_names包含了特征名称,iris.target_names包含了目标标签的名称。

🎨三、探索鸢尾花数据集

在加载了鸢尾花数据集之后,我们可以进行一些基本的探索性分析,以了解数据的分布和特性。

例如,我们可以使用matplotlib库来绘制特征之间的散点图,观察不同类别之间的分布关系:

# 导入必要的库
import matplotlib.pyplot as plt  # 导入matplotlib库,用于绘图
import seaborn as sns             # 导入seaborn库,基于matplotlib的图形可视化Python库
import pandas as pd               # 导入pandas库,用于数据处理和分析
from sklearn import datasets      # 从sklearn库中导入datasets模块,用于加载数据集# 加载鸢尾花数据集
iris = datasets.load_iris()  # 使用datasets模块的load_iris函数加载鸢尾花数据集# 将特征和标签转换为DataFrame
df_iris = pd.DataFrame(iris.data, columns=iris.feature_names)  # 将特征数据转换为pandas的DataFrame,并设置列名为鸢尾花的特征名称
df_iris['target'] = pd.Series(iris.target)  # 将标签数据转换为pandas的Series,并添加到DataFrame中作为新列'target'# 将标签转换为类别名称,以便在图中显示
df_iris['target'] = df_iris['target'].map({0: iris.target_names[0], 1: iris.target_names[1], 2: iris.target_names[2]})  
# 使用map函数将标签(整数)映射为实际的类别名称(字符串),使得在图中显示时更加直观# 绘制特征之间的散点图
sns.pairplot(df_iris, hue="target", palette="husl", vars=iris.feature_names, diag_kind="kde")  
# 使用seaborn的pairplot函数绘制特征之间的散点图
# hue参数指定根据哪一列对数据进行着色,这里根据'target'列(即类别)
# palette参数指定着色方案,这里使用"husl"方案
# vars参数指定要绘制的特征列,这里使用iris数据集中的所有特征名称
# diag_kind参数指定对角线子图的类型,这里使用"kde"表示核密度估计图plt.show()  # 显示绘制的图形

以上代码使用Python中的matplotlib和seaborn库来可视化鸢尾花数据集的特征和标签。鸢尾花数据集是一个经典的小型数据集,常用于分类算法的入门和测试。它包含了三类鸢尾花(Setosa、Versicolour、Virginica)的四个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度)的测量值以及对应的类别标签。

首先,代码通过datasets.load_iris()函数加载了鸢尾花数据集,并将特征和标签转换为pandas DataFrame格式,以便后续的数据处理和可视化。然后,代码将标签(整数形式)转换为实际的类别名称,使得在图中显示时更加直观。

接下来,代码使用seaborn的pairplot函数绘制了特征之间的散点图,并根据类别标签对点进行着色。通过对角线子图展示的是每个特征的核密度估计图,这有助于了解每个特征的分布情况。

最后,通过调用plt.show()函数,代码显示了绘制的图形:

在这里插入图片描述

🔍四、使用鸢尾花数据集进行模型训练

加载和探索了鸢尾花数据集之后,我们可以开始使用它来进行模型的训练和测试。以下是一个简单的例子,展示如何使用鸢尾花数据集训练一个支持向量机(SVM)分类器:

from sklearn import svm
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn import datasets# 加载鸢尾花数据集
iris = datasets.load_iris()# 打印数据集描述
# print(iris.DESCR) # 可选# 获取特征数据
X = iris.data# 获取目标标签
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 创建SVM分类器
clf = svm.SVC(kernel='linear') # 线性核函数# 训练模型
clf.fit(X_train, y_train)# 预测测试集
y_pred = clf.predict(X_test)# 打印分类报告
print(classification_report(y_test, y_pred, target_names=iris.target_names))

输出:

              precision    recall  f1-score   supportsetosa       1.00      1.00      1.00        19versicolor       1.00      1.00      1.00        13virginica       1.00      1.00      1.00        13accuracy                           1.00        45macro avg       1.00      1.00      1.00        45
weighted avg       1.00      1.00      1.00        45

在这个例子中,我们首先使用train_test_split函数将数据集划分为训练集和测试集。然后,我们创建了一个SVM分类器,并使用训练集对其进行训练。接着,我们使用训练好的模型对测试集进行预测,并最后打印出分类报告以评估模型的性能。

分类报告中的精确度、召回率、F1值等指标,能够为我们提供关于模型在不同类别上的表现信息。这些指标有助于我们了解模型的优点和可能存在的问题,从而指导我们进行模型的优化。

🛠️五、优化模型性能

当我们得到初始的分类结果后,通常需要对模型进行优化以提高其性能。优化模型性能的方法有很多,包括但不限于调整模型参数、使用不同的模型、进行特征选择或特征工程等。

例如,在上面的SVM例子中,我们可以尝试改变SVM的核函数,如使用径向基函数(RBF)核而不是线性核,来查看是否能获得更好的性能。我们还可以尝试调整正则化参数C,以控制模型对误差的容忍度。

此外,我们还可以考虑对数据进行标准化或归一化,以使特征之间的尺度更加一致,从而可能提高模型的性能。

🛠️六、使用鸢尾花数据集进行模型选择

在机器学习中,我们经常需要在不同的模型之间进行选择,以找到最适合我们数据的模型。鸢尾花数据集为我们提供了一个很好的平台来进行模型选择和比较。

我们可以使用交叉验证等技术来评估不同模型在鸢尾花数据集上的性能,并选择性能最好的模型。例如,我们可以比较SVM、决策树、随机森林、K近邻等模型在鸢尾花数据集上的表现,并选择最适合的模型。

📚七、总结与进一步学习

通过本博客的学习,我们了解了鸢尾花数据集的基本信息和加载方法,学习了如何探索和使用鸢尾花数据集进行模型训练和评估,以及如何进行模型优化和选择。

鸢尾花数据集虽然简单,但它包含了许多机器学习的基础概念和方法。通过实践这些方法和概念,我们可以逐渐积累机器学习的知识和经验,为进一步学习更复杂的模型和算法打下基础。

希望本博客对你有所帮助,祝你学习愉快,收获满满!#鸢尾花数据集 #Python机器学习 #SVM分类器 #模型优化与选择

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

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

相关文章

Hadoop运行搭建——系统配置和Hadoop的安装

Hadoop运行搭建 前言: 本文原文发在我自己的博客小站,直接复制文本过来,所以图片不显示(我还是太懒啦!)想看带图版的请移步我的博客小站~ Linux镜像:CentOS7 系统安装:CentOS安装参考教程 系统网卡设置…

C语言——函数指针——函数指针变量详解

函数指针变量 函数指针变量的作用 函数指针变量是指向函数的指针,它可以用来存储函数的地址,并且可以通过该指针调用相应的函数。函数指针变量的作用主要有以下几个方面: 回调函数:函数指针变量可以作为参数传递给其他函数&…

三菱PLC基础指令

LD指令(a触点的逻辑运算开 指令表程序 0000 LD X000 0001 OUT Y000 LDI指令(b触点的逻辑运算开 指令表程序 0000 LDI X000 0001 OUT Y000 3.数据寄存器(D)的位指定*1(仅对应FX3u,FX3uc可编程控制器) 指令表程序 0000 LD D0.3 0001 OUT Y000 4.定时器 0000 LDI X00…

Objects类 --java学习笔记

Objects类 Objects是一个工具类,提供了很多操作对象的静态方法给我们使用 Objects类常用的三个方法 Objects.equals 比直接equals更安全,因为Objects.equals里面做了非空校验 Objects.isNull(A) 等价于 A null Objects.non…

Redisson学习

简介 Redisson 是一个在 Redis 的基础上实现的 Java 驻留内存数据网格(In-Memory Data Grid)。它提供了许多分布式 Java 对象和服务,包括分布式锁、分布式集合、分布式执行服务、分布式调度任务等。 使用 依赖 相关依赖,注意版…

【兔子机器人】修改GO电机id(软件方法、硬件方法)

一、硬件方法 利用上位机直接修改GO电机的id号: 打开调试助手,点击“调试”,查询电机,修改id号,即可。 但先将四个GO电机连接线拔掉,不然会将连接的电机一并修改。 利用24V电源给GO电机供电。 二、软件方…

回溯算法12-全排列II(Java/排列数去重操作)

12.全排列II 题目描述 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums [1,1,2] 输出: [[1,1,2],[1,2,1],[2,1,1]]示例 2: 输入:nums [1,2,3] 输出&…

Spring Boot整合zxing实现二维码登录

zxing是google的一个二维码生成库,使用时需配置依赖: implementation("com.google.zxing:core:3.4.1") implementation("com.google.zxing:javase:3.4.1") zxing的基本使用 我们可以通过MultiFormatWriter().encode()方法获取一个…

AI预测福彩3D第3弹【2024年3月6日预测】

书接上回,经过连续两期使用人工神经网络对福彩3D进行预测,经过不断的调参优化,并及时总结规律,感觉还是有一定的信心提高七码的命中概率。 今天,咱们继续来验证,直接上今天的统计结果,首先&…

手写分布式配置中心(五)整合springboot(不自动刷新的)

springboot中使用配置方式有四种,分别是environment、BeanDefinition、Value、ConfigurationProperties。具体的原理可以看我之前的一篇文章https://blog.csdn.net/cjc000/article/details/132800290。代码在https://gitee.com/summer-cat001/config-center 原理 …

移动端uni-app小程序搜索高亮前端处理,同时可设置相关样式,兼顾性能

在uni-app中我们会遇到搜索高亮显示的需求 如下图: 起初用的是富文本实现 使用replaceAll方法取代搜索字段为一个 标签并设置相应的样式,但是小程序的并没有把 标签渲染出来,所以放弃了,下面原代码: /* 搜索字体变色…

C++进阶:详细讲解继承

现在也是结束了初阶部分的内容,今天开始就进入进阶部分了。一刻也没有为初阶的结束而哀悼,立刻赶来“战场”的是进阶部分里的继承 文章目录 1.继承的概念和定义1.1继承的概念1.2继承的定义1.2.1继承的格式1.2.2再讲访问限定符(详讲protected)1.2.3**继承…

NFT交易市场开发(一)

实现的基本功能 (一) 发行一个符合ERC20标准的测试Token,要求如下: 总量::1亿精度:18名称:Fake USDT in CBI简称:cUSDT (二) 发行一个符合ERC72…

数据结构——算法的空间复杂度

【本节内容】 1.空间复杂度 2.常见空间复杂度 1.空间复杂度 空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用额外存储空间大小的量度。 空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算…

random标准模块

一、概述 在 Python 中,random 是一个内置模块,用于生成随机数。它提供了各种用于生成随机数的函数,包括伪随机数生成器、随机序列操作等。 1、需要导包 不会自动导入,需要显示的将random模块导入 import random2、源码分析&…

课时59:流程控制_if条件控制_语法解读

2.2.1 语法解读 学习目标 这一节,我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 简介 条件结构能够根据某个特定的条件,结合内置的测试表达式功能,结合测试的结果状态值对于条件进行判断,然后选择执行合适的任务…

【Greenhills】MULTIIDE集成第三方的编辑器进行源文件编辑工作

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 在使用GHS进行工作的时候,可以集成第三方的编辑器进行源文件编辑工作 2、 问题场景 用于解决在GHS中进行项目开发时,对于GHS的编辑器使用不习惯,想要切换到其他第三方的编辑…

为什么在镀膜时要测薄膜折射率?

在芯片制造中,镀膜工序(PVD,CVD)是必不可少的关键环节,薄膜的质量直接影响了芯片的性能。对这些薄膜的精细控制又离不开对其折射率的深入理解和精确测量。今天将对芯片制造中薄膜折射率的概念、测量方法,以及它在整个制…

Arcgis小技巧【19】——更改字段顺序

一、问题分析 一般情况下,一个合格且严谨的要素或表数据,它的字段顺序都是固定的。 比如三调数据,正常的字段数据如下(截取部分字段): 数据经过处理,如增删字段,可能会出现字段顺序…

SAM模型

SAM与过去分割对比 根据以下Demo,我们可以发现,通过在图像中指定要分割的内容提示,SAM可以实现各种分割任务,且无需额外的训练、做到零样本泛化,即SAM学会了辨别物体、具备图像理解力、对不熟悉的图像和物体能进行零样本概括&…