【100天精通Python】Day72:Python可视化_一文掌握Seaborn库的使用《二》_分类数据可视化,线性模型和参数拟合的可视化,示例+代码

目录

1. 分类数据的可视化

1.1 类别散点图(Categorical Scatter Plot)

1.2 类别分布图(Categorical Distribution Plot)

1.3 类别估计图(Categorical Estimate Plot)

1.4 类别单变量图(Categorical Univariate Plot)

2. 线性模型和参数拟合可视化

2.1 线性回归模型可视化(Linear Regression Plot)

2.2 逻辑回归模型可视化(Logistic Regression Plot)

2.3 残差绘图(Residual Plot)


1. 分类数据的可视化

1.1 类别散点图(Categorical Scatter Plot)

        类别散点图用于显示不同类别之间的数据点分布,通常使用散点图来表示。

        Seaborn中的stripplotswarmplot函数用于创建这种类型的图。

  • 可以通过指定hue参数来根据另一个分类变量对数据进行分组,以区分更多信息。
  • 使用jitter参数可以添加一些随机抖动,以避免数据点的重叠。

示例代码:

import seaborn as sns
import matplotlib.pyplot as plt# 使用示例数据
data = sns.load_dataset("tips")# 创建一个类别散点图
sns.stripplot(x="day", y="total_bill", data=data)# 或者使用swarmplot
sns.swarmplot(x="day", y="total_bill", data=data)plt.show()

1.2 类别分布图(Categorical Distribution Plot)

        类别分布图用于显示类别数据的分布,常用的有boxplotviolinplotboxenplot等。

Box Plot(箱线图)

        箱线图通常用于可视化类别数据的分布,展示了数据的中位数、四分位数和异常值。使用hue参数可以将数据按照另一个类别变量分组,以便比较不同组之间的分布。

Violin Plot(小提琴图)

        小提琴图结合了箱线图和核密度估计,可以更详细地显示数据的分布。使用hue参数可以按照另一个类别变量分组,通过split参数可以将小提琴图分成两部分以更清晰地表示数据。

Boxen Plot(Boxen图)

        Boxen图是一种更详细的箱线图,它可以更好地显示数据分布的各个部分。它适用于数据集中有大量异常值的情况。

        以下是一个示例代码,演示如何在一个代码段中绘制箱线图、小提琴图和 Boxen 图,并使用 hue 参数进行数据分组和 dodge 参数分开多个分类的数据分布: 

import seaborn as sns
import matplotlib.pyplot as pltdata = sns.load_dataset("tips")# 创建一个包含多个子图的画布
fig, axes = plt.subplots(1, 3, figsize=(15, 5))# 创建箱线图
sns.boxplot(x="day", y="total_bill", hue="sex", data=data, dodge=True, ax=axes[0])
axes[0].set_title("Box Plot")# 创建小提琴图
sns.violinplot(x="day", y="total_bill", hue="sex", data=data, split=True, ax=axes[1])
axes[1].set_title("Violin Plot")# 创建 Boxen 图
sns.boxenplot(x="day", y="total_bill", hue="sex", data=data, dodge=True, ax=axes[2])
axes[2].set_title("Boxen Plot")# 调整子图布局
plt.tight_layout()plt.show()

 结果如下:

        这段代码使用 plt.subplots() 创建一个包含 3 个子图的画布,分别绘制箱线图、小提琴图和 Boxen 图,并在每个子图的标题中标注图的类型。你可以根据需要进一步自定义图形的外观和布局。 

1.3 类别估计图(Categorical Estimate Plot)

        类别估计图用于显示类别数据的估计值,例如均值、中位数等,通常用于汇总和可视化类别数据的分布特征。Seaborn中常用的函数包括barplotpointplot。

1. Bar Plot(柱状图)

        柱状图常用于显示类别数据的中心趋势估计值(如均值),以及可选的置信区间。你可以使用barplot函数来创建柱状图,同时可以根据另一个分类变量使用hue参数进行数据分组。

2. Point Plot(点图)

        点图是一种用于显示估计值的可视化方式,它显示估计值(通常是均值)以及可选的误差线。点图的优点是能够清晰地显示估计值和变异性。

import seaborn as sns
import matplotlib.pyplot as plt# 加载示例数据集
data = sns.load_dataset("tips")# 创建一个包含两个子图的画布
fig, axes = plt.subplots(1, 2, figsize=(12, 5))# 创建柱状图,显示不同日期(day)的总账单(total_bill)均值
sns.barplot(x="day", y="total_bill", data=data, ci="sd", ax=axes[0])
axes[0].set_title("Bar Plot of Total Bill by Day")
axes[0].set_ylabel("Mean Total Bill")# 创建点图,显示不同日期(day)的总账单(total_bill)中位数
sns.pointplot(x="day", y="total_bill", data=data, ci="sd", ax=axes[1])
axes[1].set_title("Point Plot of Total Bill by Day")
axes[1].set_ylabel("Median Total Bill")# 调整子图布局
plt.tight_layout()plt.show()

        在这个示例中,左侧的柱状图展示了不同日期的总账单均值,而右侧的点图展示了相同日期的总账单中位数。这两种图形强调了不同类别的估计值(均值和中位数),并通过误差线反映了数据的变异性。


1.4 类别单变量图(Categorical Univariate Plot)

        类别单变量图用于展示单一类别变量的分布情况,通常用于可视化不同类别的计数或频率。Seaborn提供了几个函数来创建类别单变量图,其中包括countplotboxenplot

Count Plot(计数图)

        计数图用于显示每个类别的计数(频数),通常用于展示类别的分布情况。你可以使用countplot函数来创建计数图。

Boxen Plot(Boxen图)

        虽然boxenplot通常用于类别数据的分布展示,但也可以用于展示单一类别变量的分布。它显示了类别变量的不同分位数,并且更详细地表示了数据的分布,适用于数据集中存在许多异常值的情况。

import seaborn as sns
import matplotlib.pyplot as pltdata = sns.load_dataset("tips")# 创建一个包含两个子图的画布
fig, axes = plt.subplots(1, 2, figsize=(12, 5))# 创建计数图,显示不同日期(day)的用餐计数
sns.countplot(x="day", data=data, ax=axes[0])
axes[0].set_title("Count Plot of Days")
axes[0].set_ylabel("Count")# 创建Boxen图,显示不同性别(sex)的总账单(total_bill)分布
sns.boxenplot(x="sex", y="total_bill", data=data, ax=axes[1])
axes[1].set_title("Boxen Plot of Total Bill by Gender")
axes[1].set_ylabel("Total Bill")# 调整子图布局
plt.tight_layout()plt.show()

        在这个示例中,左侧的计数图展示了不同日期的用餐计数,而右侧的Boxen图展示了不同性别的总账单分布。这两种图形强调了不同类别变量的不同方面,计数图强调了频数分布,而Boxen图提供了更多的分布信息。

2. 线性模型和参数拟合可视化

        线性模型和参数拟合的可视化在数据分析和机器学习中非常重要,它可以帮助你理解模型的性能、评估拟合质量以及检查模型的假设。Seaborn提供了一些函数来可视化线性回归模型和逻辑回归模型,以及绘制残差图。

2.1 线性回归模型可视化(Linear Regression Plot)

        线性回归模型可视化是一种用于展示线性关系的数据可视化方法。它通过绘制数据点和拟合的直线来呈现线性回归模型的拟合效果。

        在Seaborn中,可以使用lmplot()函数绘制线性回归模型可视化图。该函数可以同时显示数据点和拟合的线性回归模型,并提供置信区间。通过调整参数,可以自定义线条的样式、颜色和置信区间的透明度等。

import seaborn as sns
import matplotlib.pyplot as plt# 使用示例数据
data = sns.load_dataset("tips")# 使用lmplot绘制线性回归模型可视化
sns.lmplot(x="total_bill", y="tip", data=data, ci=95, scatter_kws={"color": "blue"}, line_kws={"color": "red"})# 设置标题
plt.title("Linear Regression Plot")# 调整图形布局,确保标题显示在图内
plt.tight_layout()# 显示图形
plt.show()

在这个示例中,lmplot()函数使用了 "tips" 数据集中的 "total_bill" 和 "tip" 变量来创建线性回归模型可视化。参数ci用于指定置信区间的程度(在示例中为95%置信区间),scatter_kws参数用于自定义数据点的样式(蓝色),line_kws参数用于自定义回归线的样式(红色)。 

2.2 逻辑回归模型可视化(Logistic Regression Plot)

        逻辑回归模型可视化用于展示二分类模型的效果。它通过绘制数据点和拟合的曲线,来展示逻辑回归模型在不同类别上的概率分布。

        在Seaborn中,可以使用lmplot()函数绘制逻辑回归模型可视化图。可以设置逻辑回归模型的类型(如logit、probit等),以及其他参数,如置信区间、颜色等。

示例:

import seaborn as sns
import matplotlib.pyplot as plt# 使用示例数据
data = sns.load_dataset("titanic")# 使用lmplot绘制逻辑回归模型可视化
sns.lmplot(x="age", y="survived", data=data, logistic=True, ci=None, scatter_kws={"color": "blue"})# 设置标题
plt.title("Logistic Regression Plot")
# 调整图形布局,确保标题显示在图内
plt.tight_layout()
# 显示图形
plt.show()

     

        该代码片段的目的是使用逻辑回归模型绘制乘客的年龄和存活情况之间的关系,通过可视化呈现逻辑回归模型的结果。

  sns.load_dataset("titanic") 会加载 Seaborn 库中的内置数据集 "titanic",其中包含了泰坦尼克号乘客的信息,如年龄、是否存活等。

        接着,使用 sns.lmplot() 函数创建逻辑回归模型的可视化。该函数用于绘制回归关系。在这里,x="age" 表示 x 轴为乘客的年龄,y="survived" 表示 y 轴为乘客的存活情况,data=data 表示数据来自加载的 "titanic" 数据集,logistic=True 表示使用逻辑回归模型,ci=None 表示不绘制置信区间,scatter_kws={"color": "blue"} 表示散点图中点的颜色为蓝色。

        接下来,通过 plt.title() 设置图表的标题为 "Logistic Regression Plot"。

        plt.tight_layout() 调整图表布局以确保标题在图表内显示。

2.3 残差绘图(Residual Plot)

        残差绘图用于检查线性回归模型的拟合效果是否良好。它通过绘制预测值与观测值之间的差异(即残差)来评估模型的拟合程度。

        在Seaborn中,可以使用residplot()函数绘制残差绘图。函数会自动计算出残差,并绘制出残差与预测值之间的关系图。通过观察残差的分布情况,我们可以判断模型是否存在线性性、同方差性和独立性的假设违反。

import seaborn as sns
import matplotlib.pyplot as plt# 加载示例数据
data = sns.load_dataset("tips")# 使用 lmplot 绘制回归关系图
sns.lmplot(x="total_bill", y="tip", data=data)# 绘制残差图
sns.residplot(x="total_bill", y="tip", data=data, scatter_kws={"s": 25, "alpha": 0.5})# 设置图标题
plt.title("Residual Plot")
plt.tight_layout()
# 显示图形
plt.show()

  • sns.load_dataset("tips") 会加载 Seaborn 库中的示例数据集 "tips",包含餐厅顾客消费金额和小费的数据。

  • sns.lmplot() 用于绘制总消费金额 (total_bill) 和小费 (tip) 之间的回归关系图。

  • sns.residplot() 绘制残差图,传入 x="total_bill"y="tip",即自变量和因变量。scatter_kws={"s": 25, "alpha": 0.5} 是用于自定义散点图的样式,设置点的大小和透明度。

 

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

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

相关文章

3 tensorflow构建的模型详解

上一篇:2 用TensorFlow构建一个简单的神经网络-CSDN博客 1、神经网络概念 接上一篇,用tensorflow写了一个猜测西瓜价格的简单模型,理解代码前先了解下什么是神经网络。 下面是百度AI对神经网络的解释: 这里不赘述太多概念相关的…

【Apache Flink】基于时间和窗口的算子-配置时间特性

文章目录 前言配置时间特性将时间特性设置为事件时间时间戳分配器周期性水位线分配器创建一个实现AssignerWithPeriodicWatermarks接口的类,目的是为了周期性生成watermark 定点水位线分配器示例 参考文档 前言 Apache Flink 它提供了多种类型的时间和窗口概念&…

NSS刷题 js前端修改 os.path.join漏洞

打算刷一遍nssweb题(任重道远) 前面很简单 都是签到题 这里主要记录一下没想到的题目 [GDOUCTF 2023]hate eat snake js前端修改 这里 是对js的处理 有弹窗 说明可能存在 alert 我们去看看js 这里进行了判断 如果 getScore>-0x1e9* 我们结合上面…

【MATLAB源码-第61期】基于蜣螂优化算法(DBO)的无人机栅格地图路径规划,输出最短路径和适应度曲线。

操作环境: MATLAB 2022a 1、算法描述 蜣螂优化算法(Dung Beetle Optimization, DBO)是一种模拟蜣螂在寻找食物和进行导航的过程的优化算法。蜣螂是一种能够将粪球滚到合适地点的昆虫,它们利用天空中的光线和自身的感知能力来确…

Go 开发IDE全览:GoLand VS VSCode全面解析

一、引言 在软件开发的世界里,开发环境的选择与配置是成功项目的基础之一。特别是在Go(又名Golang)这样一个逐渐获得主流认同、在微服务和云计算领域有着广泛应用的编程语言中,选择合适的开发工具就显得尤为重要。虽然Go语言自身…

【MySQL】 复合查询 | 内外连接

文章目录 1. 复合查询多表笛卡尔积自连接在where子句使用子查询单行子查询多行子查询in关键字all关键字any关键字 多列子查询 在from子句中使用子查询合并查询unionunion all 2. 内连接3. 外连接左外连接右外连接 1. 复合查询 多表笛卡尔积 显示雇员名、雇员工资以及所在部门…

LeetCode2741.特别的排列 状压

暴力枚举的话是n&#xff01; 考虑状压DP&#xff0c;其实就是用二进制表示状态 再进行暴力 同时加一个记忆化就好了 这里有常用技巧&#xff1a; 全集&#xff08;1<<n&#xff09;-1 增加某个元素 x | (1<<i) 删除某个元素 x & ~(1<<i) const i…

Java进阶(Set)——面试时Set常见问题解读 结合源码分析

前言 List、Set、HashMap作为Java中常用的集合&#xff0c;需要深入认识其原理和特性。 本篇博客介绍常见的关于Java中Set集合的面试问题&#xff0c;结合源码分析题目背后的知识点。 关于List的博客文章如下&#xff1a; Java进阶&#xff08;List&#xff09;——面试时L…

最短路径:迪杰斯特拉算法

简介 英文名Dijkstra 作用&#xff1a;找到路中指定起点到指定终点的带权最短路径 核心步骤 1&#xff09;确定起点&#xff0c;终点 2&#xff09;从未走过的点中选取从起点到权值最小点作为中心点 3&#xff09;如果满足 起点到中心点权值 中心点到指定其他点的权值 < 起…

Java学习_day05_数组

文章目录 一维数组概念初始化默认值动态赋值 二维数组概念初始化遍历数组 一维数组 数组是目前学习Java中&#xff0c;遇到的第一个引用对象。即在变量的存储空间中&#xff0c;存储的不再是数值&#xff0c;而是内存地址。这个内存地址指向实际对象的存储空间地址。 概念 …

Cocos Creator 中使用装饰器进行自动绑定

推荐一个偷懒的方式&#xff0c;使用装饰器自动绑定节点到脚本的属性 背景 用 Cocos Creator 写脚本组件的时候&#xff0c;有时需要场景中一个节点作为这个脚本的属性值。 按照官方文档推荐的方法&#xff0c;需要以下两步 添加一个 property 属性&#xff0c;在场景中拖入这个…

三维地图数据共享与统一存储

这家总部位于北京的高新企业是一家致力于三维数字地理技术的领军企业&#xff0c;提供中国领先的三维数据获取服务&#xff0c;并依据三维数据自动建模云计算服务、提供全国性的地图与位置服务。这项技术其实我们每天都有可能用到&#xff0c;例如百度地图、高德地图就属于三维…

基于标签的电影推荐算法研究_张萌

&#xff12; 标签推荐算法计算过程 &#xff12;&#xff0e;&#xff11; 计算用户对标签的喜好程度 用户对一个标签的认可度可以使用二元关系来表示&#xff0c;这种关系只有“是”“否”两种结果&#xff0c;实际上难以准确地表达出用 户对物品的喜好程度。因此&#x…

BUUCTF qr 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 这是一个二维码&#xff0c;谁用谁知道&#xff01; 密文&#xff1a; 下载附件&#xff0c;得到一张二维码图片。 解题思路&#xff1a; 1、这是一道签到题&#xff0c;扫描二维码得到flag。 flag&#xff1a;…

【23真题】大神凭这套拿452分!看看你能拿多少?

今天分享的是23年福州大学866的信号与系统试题及解析。23年福州大学新一代电子信息的最高分是452分&#xff01;但是我看不到单科分数。按照75&#xff0c;75&#xff0c;150&#xff0c;150。也就是只有450&#xff0c;说明这个同学&#xff0c;专业课和数学几乎拿满&#xff…

图纸管理制度《六》

为建立健全机运系统技术档案管理工作&#xff0c;完整的保存和科学地管理机运系统的技术档案&#xff0c;充分发挥技术档案在我矿建设发展中的作用&#xff0c;更好地为我矿个生产技术部门服务&#xff0c;特制定本管理制度. 1、要把图纸、技术档案管理工作纳入技术业务工作中…

火山引擎 ByteHouse:只需 2 个方法,增强 ClickHouse 数据导入能力

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 作为企业数字化建设的必备要素&#xff0c;易用的数据引擎能帮助企业提升数据使用效率&#xff0c;更好提升数据应用价值&#xff0c;夯实数字化建设基础。 数据导…

任正非说:扩张必须踩在坚实的基础上,擅自扩张只能是自杀。

嗨&#xff0c;你好&#xff01;这是华研荟【任正非说】系列的第23篇文章&#xff0c;让我们继续聆听任正非先生的真知灼见&#xff0c;学习华为的管理思想和管理理念。 一、要想赢&#xff0c;要么在剑法上高于人&#xff0c;要么在盾牌上坚于人。若果剑不如人&#xff0c;就要…

电脑怎么共享屏幕?电脑屏幕共享软件分享!

如何控制某人的电脑屏幕&#xff1f; 有时我们可能需要远程控制某人的计算机屏幕&#xff0c;例如&#xff0c;为我们的客户提供远程支持&#xff0c;远程帮助朋友或家人解决计算机问题&#xff0c;或在家中与同事完成团队合作。那么&#xff0c;电脑怎么共享屏幕&#xff…