Seaborn的15种可视化图表详解
发布日期:2024-10-14 08:21 点击次数:198
前言
可视化方法在机器学习和人工智能领域有着重要的作用,主要体现在以下几个方面:
数据探索与理解:这些可视化方法帮助分析数据的分布、关系和特征之间的模式。在机器学习中,对数据的深入理解是构建有效模型的关键步骤。通过可视化,可以识别异常值、观察特征之间的相关性,为数据预处理和特征工程提供指导。
模型性能评估:小提琴图、蜂群图等可用于展示不同类别或不同模型的性能分布情况。模型的性能对比可以通过这些可视化方式更直观地传达给非技术人员,帮助他们理解模型的相对效果,从而做出更明智的决策。
特征重要性展示:联合分布图和散点图矩阵等可视化工具有助于展示特征之间的关系,包括它们与目标变量的关系。这有助于确定哪些特征对于预测任务最为重要,帮助进行特征选择和模型解释。
超参数调优:折线图、小提琴图等可用于展示模型性能随超参数变化的趋势。通过这些可视化,可以更容易地选择最优的超参数组合,提高模型的泛化性能。
交互式可视化:部分可视化工具支持交互式操作,用户可以动态调整参数、查看详细信息,从而更灵活地进行探索性分析和模型调优。
总体而言,可视化工具在机器学习中的作用主要在于帮助数据科学家和决策者更好地理解数据、评估模型性能、进行模型解释以及支持决策制定。通过可视化,复杂的机器学习问题可以以更直观、易理解的方式呈现,促进团队协作和决策过程。
代码
使用了Python中的Seaborn和Matplotlib库,目的是加载并可视化著名的鸢尾花数据集。为可视化提供数据支撑。
import seaborn as snsimport matplotlib.pyplot as plt data=sns.load_dataset('iris')data.head()条形图条形图用于表示分类变量,它只显示平均值(或其他估计值)。我们为x轴选择一个分类列,为y轴(花瓣长度)选择一个数值列,我们看到它创建了一个为每个分类列取平均值的图
sns.barplot(x='species',y='petal_length',hue='species',data=data)plt.show()
代码使用Seaborn的barplot函数创建了一个条形图。参数x表示x轴上的数据,这里是鸢尾花的种类;参数y表示y轴上的数据,这里是花瓣长度;参数hue表示用于分组的数据,这里是鸢尾花的种类;参数data是传入的数据集,这里是加载的鸢尾花数据集。
图片
散点图散点图是由几个数据点组成的图。x轴表示花瓣长度,y轴表示数据集的萼片长度。
sns.scatterplot(x='petal_length',y='sepal_length',hue='species',style='species',s=90,data=data)plt.show()代码使用Seaborn的scatterplot函数创建了一个散点图。参数x表示x轴上的数据,这里是花瓣长度;参数y表示y轴上的数据,这里是萼片长度;参数hue表示用于分组的数据,这里是鸢尾花的种类,不同种类用不同颜色表示;参数style表示用于不同种类的不同样式,这里也是鸢尾花的种类;参数s表示散点的大小;参数data是传入的数据集,这里加载的鸢尾花数据集。
图片
直方图直方图通常用于可视化单个变量的分布,但它们也可用于比较两个或更多变量的分布。除了直方图之外,KDE参数还可以用来显示核密度估计(KDE)。这里,我们使用萼片长度。
sns.histplot(x='sepal_length',kde=True,data=data)plt.show()
图片
使用Seaborn的histplot函数创建了一个直方图。参数x表示绘制直方图的变量,这里是萼片长度;参数kde=True表示在直方图上添加核密度估计;参数data是传入的数据集。
sns.histplot(x='sepal_length',kde=True,hue='species',data=data)plt.show()使用Seaborn的histplot函数创建了一个带有多个组别的直方图。参数x表示绘制直方图的变量,这里是萼片长度;参数kde=True表示在直方图上添加核密度估计;参数hue表示用于分组的数据,这里是鸢尾花的种类;参数data是传入的数据集。
图片
线性图线形图可以用来可视化各种数据不同的关系。它们易于创建和分析,在线形图中每个数据点由直线连接。
sns.lineplot(x='petal_length',y='petal_width',data=data)plt.grid(True)plt.show()
使用 Seaborn 的 lineplot 函数创建了一个线图。参数 x 表示 x 轴上的数据,这里是花瓣长度;参数 y 表示 y 轴上的数据,这里是花瓣宽度;参数 data 是传入的数据集。
图片
小提琴图小提琴图可以表示数据的密度,数据的密度越大的区域越胖。“小提琴”形状表示数据的核密度估计,每个点的形状宽度表示该点的数据密度。
sns.violinplot(x='species',y='petal_length',data=data,hue='species')plt.show()图片
使用 Seaborn 的 violinplot 函数创建了一个小提琴图。参数 x 表示 x 轴上的数据,这里是鸢尾花的种类;参数 y 表示 y 轴上的数据,这里是花瓣长度;参数 data 是传入的数据集;参数 hue 表示用于分组的数据,这里也是鸢尾花的种类。小提琴图展示了每个类别中数据的分布情况,类似于箱线图。
箱线图箱形图由一个箱形图和两个须状图组成。它表示四分位数范围(IQR),即第一和第三四分位数之间的范围。中位数由框内的直线表示。须状图从盒边缘延伸到最小值和最大值的1.5倍IQR。异常值是落在此范围之外的任何数据点,并会单独显示出来。
sns.boxplot(x='species',y='sepal_length',data=data,hue='species')plt.show()
使用 Seaborn 的 boxplot 函数创建了一个箱线图。参数 x 表示 x 轴上的数据,这里是鸢尾花的种类;参数 y 表示 y 轴上的数据,这里是萼片长度;参数 data 是传入的数据集;参数 hue 表示用于分组的数据,这里也是鸢尾花的种类。箱线图显示了每个类别中数据的分布情况,包括中位数、上下四分位数以及可能的异常值。
图片
热力图热力图是数据的二维可视化表示,它使用颜色来显示变量的值。热图经常用于显示数据集中的各种因素如何相互关联,比如皮尔逊相关系数。
heat_corr=data.iloc[:,0:4].corr()sns.heatmap(heat_corr,annot=True)plt.show()使用 Seaborn 的 heatmap 函数创建了一个热力图。参数 data 是传入的数据,这里是相关性矩阵;annot=True 表示在图上显示注释,即相关系数的数值。
图片
点图点图是一种统计图表,用于显示一组数据及其变异性的平均值或集中趋势。点图通常用于探索性数据分析,可以快速可视化数据集的分布或比较多个数据集。
sns.pointplot(x='species',y='petal_length',data=data,markers ='^',color='g')plt.show()
使用 Seaborn 的 pointplot 函数创建了一个点图。参数 x 表示 x 轴上的数据,这里是鸢尾花的种类;参数 y 表示 y 轴上的数据,这里是花瓣长度;参数 data 是传入的数据集;参数 markers 表示数据点的标记形状,这里使用三角形(^);参数 color 表示数据点的颜色,这里是绿色(g)。
图片
密度图密度图通过估计连续随机变量的概率函数来表示数据集的分布,也称为核密度估计(KDE)图。
sns.kdeplot(x='petal_length',data=data,hue='species',multiple='stack')plt.show()使用 Seaborn 的 kdeplot 函数创建了一个核密度估计图。参数 x 表示 x 轴上的数据,这里是花瓣长度;参数 data 是传入的数据集;参数 hue 表示用于分组的数据,这里是鸢尾花的种类;参数 multiple='stack' 表示将核密度估计堆叠在一起,以更清晰地显示不同组别的分布。
图片
sns.kdeplot(x='petal_length',y='sepal_length',data=data,hue='species')plt.show()
代码使用 Seaborn 的 kdeplot 函数创建了一个二维核密度估计图。参数 x 表示 x 轴上的数据,这里是花瓣长度;参数 y 表示 y 轴上的数据,这里是萼片长度;参数 data 是传入的数据集;参数 hue 表示用于分组的数据,这里是鸢尾花的种类。
图片
计数图计数图是一种分类图,它显示了分类变量的每个类别中观测值的计数。它本质上是一个柱状图,其中每个柱的高度代表特定类别的观测值的数量。
sns.countplot(x='species', data=data)plt.show()使用 Seaborn 的 countplot 函数创建了一个计数条形图。参数 x 表示 x 轴上的数据,这里是鸢尾花的种类;参数 data 是传入的数据集。
图片
蜂群图蜂群图(Swarm Plot)是一种散点图的变体,通常用于可视化分类变量和数值变量之间的关系。蜂群图通过在图上分散数据点,避免它们的重叠,从而更清晰地显示数据的分布。蜂群图提供了一种直观、直观的方式来观察和理解分类变量和数值变量之间的关系,特别适用于中小规模的数据集。
sns.swarmplot(x='sepal_width',y='species',data=data,hue='species',dodge=True,orient='h',size=8)plt.show()
使用 Seaborn 的 swarmplot 函数创建了一个蜂群图。参数 x 表示 x 轴上的数据,这里是萼片宽度;参数 y 表示 y 轴上的数据,这里是鸢尾花的种类;参数 data 是传入的数据集;参数 hue 表示用于分组的数据,这里也是鸢尾花的种类;参数 dodge=True 表示在每个分类上分开蜂群点;参数 orient='h' 表示水平方向绘制;参数 size=8 表示蜂群点的大小。
图片
配对图配对图可视化了数据集中几个变量之间的成对关系。它创建了一个坐标轴网格,这样所有数值数据点将在彼此之间创建一个图,在x轴上具有单列,y轴上具有单行。对角线图是单变量分布图,它绘制了每列数据的边际分布。
sns.set(rc = {'figure.figsize':(6,3)})sns.pairplot(data=data,hue='species')plt.show()使用 Seaborn 库创建了一个成对的散点图矩阵,展示了鸢尾花数据集中不同种类花的四个数值变量之间的关系。
图片
Facet GridSeaborn中的FacetGrid函数将数据集和一个或多个分类变量作为输入,并创建一个图表网格,每种类别变量的组合都有一个图表。网格中的每个图都可以定制为不同类型的图,例如散点图、直方图或箱形图。
g=sns.FacetGrid(data, col='species',height=4,hue='species')g.map(sns.histplot, 'petal_length')plt.show()
使用 FacetGrid 创建了一个分面网格,每个子图中都是不同种类的鸢尾花,横轴表示花瓣长度。通过 map 方法,对每个子图使用 histplot 绘制了关于花瓣长度的直方图。这使得我们可以在同一图中比较不同种类鸢尾花的花瓣长度分布情况。
图片
联合分布图联合分布图将两个不同的图组合在一个表示中,可以展示两个变量之间的关系(二元关系)
sns.jointplot(x='sepal_length', y='sepal_width', data=data, palette='Set2',hue='species')plt.show()使用 jointplot 函数创建了一个联合分布图,横轴表示萼片长度,纵轴表示萼片宽度。通过 hue='species' 参数,不同种类的鸢尾花用不同颜色表示,帮助我们观察它们在这两个变量上的分布关系。palette='Set2' 参数指定了颜色调色板,用于更好地区分不同的物种。
图片
分类图cat图(分类图的缩写)是Seaborn中的定制的一种图,它可以可视化数据集中一个或多个分类变量与连续变量之间的关系。它可用于显示分布、比较组或显示不同变量之间的关系。
sns.catplot(data=data, x='petal_length', y='species', kind='violin', color='.9', inner=None)sns.swarmplot(data=data, x='petal_length', y='species', size=3)plt.show()
使用 catplot 函数创建了一个小提琴图,其中横轴表示花瓣长度,纵轴表示鸢尾花的种类。通过 kind='violin' 参数指定了绘制小提琴图, color='.9' 参数设置了小提琴图的颜色为浅灰色, inner=None 参数去除了小提琴图内部的盒图。
接着,使用 swarmplot 函数创建了一个蜂群图,以更清晰地显示每个数据点。在蜂群图中,每个点表示一个观测值,颜色表示鸢尾花的种类,而它们的水平位置表示花瓣长度。
通过这两个图的结合,可以更全面地了解不同种类鸢尾花的花瓣长度分布情况。
图片
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。