【机器学习3】鸢尾花数据集可视化,让枯燥的数据颜值爆表!

简介: 【机器学习3】鸢尾花数据集可视化,让枯燥的数据颜值爆表!

鸢尾花

(梵高生命中的鸢尾花)

鸢尾花数据集?

Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。

数据集包含150个数据样本,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长

长度花萼宽度花瓣长度花瓣宽度4个属性预测鸢尾花卉属于(SetosaVersicolourVirginica)三个种类中的哪一类。

机器学习基本概念——特征、标签

特征是输入变量,即简单线性回归中的变量,如鸢尾花数据集中的花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以将这四个特征指定为

标签是我们要预测的事物,即简单线性回归中的变量,如鸢尾花数据集中的鸢尾花的种类。

所以本次我们要研究的鸢尾花数据集包含了四个特征,一个标签

导入鸢尾花数据库

我们看到的加粗的一列是索引列,表格中的第0列是Unnamed: 0这一列,我认为这一列对后续的研究没有什么太大帮助,所以我考虑删除这一列。

删除某一列:drop()方法:

#pandas 删除某一行/列
# 语法:DataFrame.drop(Labels=None,axis=0,index=None,columns=None,inplace=False)

参数说明:
labels 就是要删除的行列的名字,用列表给定
axis 默认为0,指删除行,因此删除列时要指定axis=1;
index 直接指定要删除的行
columns 直接指定要删除的列

inplace=False,默认该删除操作不改变原数据,而是返回一个执行删除操作后的新的dataframe;
inplace=True,则会直接在原数据上进行删除操作,删除后无法返回。

 

导入库Python可视化数据库matplotlib

导入 Python可视化库seaborn

seaborn是基于matplotlib的Python可视化库,将matplotlib库进行了进一步的封装,使用更加简单,而且绘制出的图表更加高大上。

使用DataFrame的属性和方法对鸢尾花数据集进行探索性分析

.后面带()的是方法,不带()的是属性

df.shape:150行 5列

df.describe()查看各列数据的统计特征

df.info()查看缺失值情况

可视化鸢尾花数据

 直方图:

这里绘制出的直方图只是特征列,因为标签列它是三元分类,是离散的而非连续的,(横坐标为厘米)花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以直观的看出每一列的大致分布。

绘制四列特征各自的直方图:

 df.plot.area()可以直观的看出三类鸢尾花的花萼长度、花萼宽度、花瓣长度、花瓣跨宽度的大致大小。(由下面可以明显看出三种花的分层)

特征两两关系图

("hue":针对某一字段进行分类)因为我们主要探索的是各特征与鸢尾花种类的关系,所以我们选择鸢尾花种类这一标签列为"hue"

绘制KDE图

什么是KDE分布图呢?

KDE分布图,是指Kernel Density Estimation核概率密度估计。可以理解为是对直方图的加窗平滑。通过KDE分布图,可以查看并对训练数据集和测试数据集中特征变量的分布情况。

这个KDE图是单独看的四列特征列的各列的数据特征,绘制出来的。通过这个图,比如说橙色的花萼宽度,可以直观的看出它大致分布在0~5这样的一个区间且大部分位于2~4.对比直方图,核密度估计图能够更加全面的反应数据的一个分布特点。

计算特征两两之间的pearson相关系数

将pearson相关系数矩阵绘制热力图

绘制箱型图:

三种鸢尾花的花瓣长度的箱型图:

三种鸢尾花花瓣宽度箱型图:

三种鸢尾花花萼长度的箱型图:

三种鸢尾花花萼宽度的箱型图:

我们可以将以上四个图绘制在一张图表中:


小提琴图

小提琴图 (Violin Plot)是用来展示多组数据的分布状态以及概率密度,是优于箱线图的一种统计图形。他结合了箱线图与密度图,箱线图位于小提琴图内部,两侧是数据的密度图,能显示出数据的多个细节。

花萼长度:

花萼宽度:

花瓣长度:

花瓣宽度:

同样,我们可以将我们研究的这一类的四张图片放在一张上面:

每一个小提琴图中间的黑色的线就是箱型图中间的那条线,相比箱型图,小提琴图能够更加真实全面地反应数据的连续概率密度分布。

不同鸢尾花---花萼长度、花萼宽度、花瓣长度、花瓣宽度小提琴图

不同鸢尾花--花瓣长度 小提琴图

不同鸢尾花---花瓣宽度 小提琴图

不同鸢尾花---花萼长度小提琴图

不同鸢尾花  ----花萼宽度 小提琴图

当然,我们仍然可以将上面四个图放在一张图上 :(还是感觉上面的配色更好看一点)

平行坐标图

平行坐标图是可视化高维几何和分析多元数据的常用方法。看似高大上,但实际上就是简单粗暴地把不同特征的数据绘制成折线图。

3f84d62fa0d44fd297a6059441095e13.png

雷达图(径向坐标可视化):

RadViz雷达图(径向坐标可视化)是一种可视化多维数据的方式。

本质是将多维特征降维压缩到二维,每个数据压缩为一个点。它是基于基本的弹簧压力最小化算法。

33d1e3030a804df4868fa07c260bacce.png

安德鲁斯曲线

安德鲁斯曲线将每个样本的属性值转化为傅里叶序列的系数来绘制曲线。

它将四维空间映射为二维的一个曲线。每一根线都表示一根鸢尾花。


相关文章
|
3天前
|
机器学习/深度学习
【机器学习】噪声数据对贝叶斯模型有什么样的影响?
【5月更文挑战第10天】【机器学习】噪声数据对贝叶斯模型有什么样的影响?
|
7天前
|
机器学习/深度学习 数据采集 算法
数据分享|R语言机器学习预测案例合集:众筹平台、机票折扣、糖尿病患者、员工满意度
数据分享|R语言机器学习预测案例合集:众筹平台、机票折扣、糖尿病患者、员工满意度
|
8天前
|
数据采集
【大模型】大语言模型训练数据中的偏差概念及其可能的影响?
【5月更文挑战第5天】【大模型】大语言模型训练数据中的偏差概念及其可能的影响?
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
【AI 生成式】如何利用生成式人工智能进行机器学习的数据增强?
【5月更文挑战第4天】【AI 生成式】如何利用生成式人工智能进行机器学习的数据增强?
|
13天前
|
机器学习/深度学习 存储 数据采集
【Python 机器学习专栏】PCA(主成分分析)在数据降维中的应用
【4月更文挑战第30天】本文探讨了主成分分析(PCA)在高维数据降维中的应用。PCA通过线性变换找到最大化方差的主成分,从而降低数据维度,简化存储和计算,同时去除噪声。文章介绍了PCA的基本原理、步骤,强调了PCA在数据降维、可视化和特征提取上的优势,并提供了Python实现示例。PCA广泛应用在图像压缩、机器学习和数据分析等领域,但降维后可能损失解释性,需注意选择合适主成分数量及数据预处理。
|
13天前
|
机器学习/深度学习 Python
【Python机器学习专栏】时间序列数据的特征工程
【4月更文挑战第30天】本文探讨了时间序列数据的特征工程,强调其在捕捉季节性、揭示趋势、处理异常值和提升模型性能中的重要性。介绍了滞后特征、移动窗口统计特征、时间戳特征、频域特征和波动率特征等方法,并提供了Python实现示例。通过有效特征工程,可提高时间序列分析的准确性和预测可靠性。
|
13天前
|
机器学习/深度学习 计算机视觉 Python
【Python 机器学习专栏】图像数据的特征提取与预处理
【4月更文挑战第30天】本文探讨了图像数据的特征提取与预处理在机器学习中的重要性。图像数据具有大容量、信息丰富和冗余性高的特点。特征提取涉及颜色、纹理和形状特征;预处理包括图像增强、去噪和分割。Python的OpenCV和Scikit-image库在处理这些任务时非常有用。常见的特征提取方法有统计、变换和基于模型的方法,而预处理应注意保持图像真实性、适应性调整及验证评估。有效的特征提取和预处理能提升模型性能,Python工具使其更高效。
|
13天前
|
机器学习/深度学习 自然语言处理 算法
【Python机器学习专栏】文本数据的特征提取与表示
【4月更文挑战第30天】本文探讨了文本特征提取与表示在机器学习和NLP中的重要性。介绍了词袋模型、TF-IDF和n-gram等特征提取方法,以及稀疏向量和词嵌入等表示方式。Python中可利用sklearn和gensim库实现这些技术。有效的特征提取与表示有助于将文本数据转化为可处理的数值形式,推动NLP和机器学习领域的进步。
|
13天前
|
机器学习/深度学习 数据采集 算法
【Python机器学习专栏】使用Scikit-learn进行数据编码
【4月更文挑战第30天】本文介绍了Python Scikit-learn库在机器学习数据预处理中的作用,尤其是数据编码。数据编码将原始数据转化为算法可理解的格式,包括标签编码(适用于有序分类变量)、独热编码(适用于无序分类变量)和文本编码(如词袋模型、TF-IDF)。Scikit-learn提供LabelEncoder和OneHotEncoder类实现这些编码。示例展示了如何对数据进行标签编码和独热编码,强调了正确选择编码方法的重要性。
|
13天前
|
机器学习/深度学习 数据采集 算法
【Python机器学习专栏】数据标准化与归一化技术
【4月更文挑战第30天】在机器学习中,数据预处理的两大关键步骤是标准化和归一化,旨在调整数据范围以优化算法性能。标准化将数据缩放到特定区间,如[-1, 1]或[0, 1],适合基于距离的算法,如KNN、SVM。归一化则将数据线性变换到[0, 1],保持相对关系。Python中可使用`sklearn.preprocessing`的`MinMaxScaler`和`StandardScaler`实现这两种操作。选择哪种方法取决于数据分布和算法需求。预处理能提升模型理解和性能,增强预测准确性和可靠性。