【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.hqwc.cn/news/526985.html

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

相关文章

《探索自动驾驶技术的前景与挑战》

自动驾驶技术,作为现代科技的一大突破,正逐渐改变着我们的交通方式、生活方式以及整个社会结构。本文将围绕自动驾驶技术的现状、优势、局限性以及未来发展趋势展开探讨。 自动驾驶技术的现状概述 自动驾驶技术作为当今科技领域的一项前沿技术,已经取得了巨大的进展并在不同…

So you think you understand IP fragmentation?

文章目录 前言一、Why care?二、Prevention三、Well-understood?四、Introducing fragquiz五、A novel (?) algorithm六、Reader challenge七、traceroute八、ICMP参考资料 前言 本文来自:https://lwn.net/Articles/960913/ February 7, 2024This article was …

人工智能(AI)领域最流行的八大算法概括

人工智能(AI)领域最流行的八大算法概括! 1. 卷积神经网络(CNN,Convolutional Neural Network) 2. 图神经网络(GNN,Graph Neural Network) 3. 循环神经网络(RN…

计算两帧雷达数据之间的变换矩阵

文章目录 package.xmlCMakeLists.txtpoint_cloud_registration.cc运行结果 package.xml <?xml version"1.0"?> <package format"2"><name>point_cloud_registration</name><version>0.0.0</version><descriptio…

mysql的trace追踪SQL工具,进行sql优化

trace是MySQL5.6版本后提供的SQL跟踪工具&#xff0c;通过使用trace可以让我们明白optimizer&#xff08;优化器&#xff09;如何选择执行计划。 注意&#xff1a;开启trace工具会影响mysql性能&#xff0c;所以只适合临时分析sql使用&#xff0c;用完之后请立即关闭。 测试数…

golang开发:goroutine在项目中的使用姿势

很多初级的Gopher在学习了goroutine之后&#xff0c;在项目中其实使用率不高&#xff0c;尤其一些跨语言过来的人&#xff0c;对并发编程理解不深入&#xff0c;可能很多人只知道go func(),或者掌控不够&#xff0c;谨慎一些&#xff0c;尽量少使用或者不使用&#xff0c;用的话…

博士推荐 | 美国知名化工企业研发主管,高分子科学与工程博士

编辑 / 木子 审核 / 朝阳 伟骅英才 伟骅英才致力于以大数据、区块链、AI人工智能等前沿技术打造开放的人力资本生态&#xff0c;用科技解决职业领域问题&#xff0c;提升行业数字化服务水平&#xff0c;提供创新型的产业与人才一体化服务的人力资源解决方案和示范平台&#x…

未来城市:探索数字孪生在智慧城市中的实际应用与价值

目录 一、引言 二、数字孪生与智慧城市的融合 三、数字孪生在智慧城市中的实际应用 1、智慧交通管理 2、智慧能源管理 3、智慧建筑管理 4、智慧城市管理 四、数字孪生在智慧城市中的价值 五、挑战与展望 六、结论 一、引言 随着科技的飞速发展&#xff0c;智慧城市已…

Windows系统安装Tomcat并结合内网穿透实现公网访问本地网页

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 前言 Tomcat作为一个拥有强大功能的轻量级服务器&#xff0c;由于其可以实…

代码讲解:如何把3D数据转换成旋转的视频?

目录 3D数据集下载 读取binvox文件 使用matplotlib创建图 动画效果 完整代码 3D数据集下载 这里以shapenet数据集为例&#xff0c;可以访问外网的可以去直接申请下载&#xff1b;我也准备了一个备份在百度网盘的数据集&#xff0c;可以参考&#xff1a; ShapeNet简介和下…

【C++庖丁解牛】实现string容器的增删查改 | string容器的基本接口使用

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 前言&#x1f4d6;pu…

数据结构部分

来源地址 一 数据结构 1 堆和树之间的区别 区别就在于树是没有特定顺序的&#xff0c;你需要遍历整个树才能找到特定元素&#xff1b;而堆是有序的&#xff0c;你可以直接找到最大&#xff08;或最小&#xff09;的元素。 堆&#xff1a;假设你正在开发一个任务调度系统&…