【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.mzph.cn/news/122246.shtml

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

相关文章

深入了解 Elasticsearch 8.1 中的 Script 使用

一、什么是 Elasticsearch Script? Elasticsearch 中的 Script 是一种灵活的方式,允许用户在查询、聚合和更新文档时执行自定义的脚本。这些脚本可以用来动态计算字段值、修改查询行为、执行复杂的条件逻辑等等。 二、支持的脚本语言有哪些 支持多种脚本…

《HelloGitHub》第 91 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、…

nodejs+vue+elementui+express外卖数据分析python

在上述需求分析的基础上,通过深入研究,将系统使用人员划分为信息采集编辑、信息维护编辑、信息发布编辑三个角色。 本论文的研究目的是为了给采编者提供一套完善、高效的智能信息收集解决方案,并利用一系列的程序设计与开发,为采…

公司电脑禁用U盘的方法

公司电脑禁用U盘的方法 安企神U盘管理系统下载使用 在这个复杂的数据时代,保护公司数据的安全性至关重要。其中,防止未经授权的数据泄露是其中的一个关键环节。U盘作为一种常用的数据传输工具,也成为了潜在的安全风险。因此,公司…

NSS [鹤城杯 2021]EasyP

NSS [鹤城杯 2021]EasyP 直接给了源码 <?php include utils.php;if (isset($_POST[guess])) {$guess (string) $_POST[guess];if ($guess $secret) {$message Congratulations! The flag is: . $flag;} else {$message Wrong. Try Again;} }if (preg_match(/utils\.p…

【MATLAB源码-第58期】基于蛇优化算法(SO)和粒子群优化算法(PSO)的栅格地图路径规划最短路径和适应度曲线对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 粒子群算法 (Particle Swarm Optimization, PSO) 1. 算法概述 粒子群算法是一种基于群体智能的优化算法&#xff0c;模拟鸟群觅食的行为。算法中的每个粒子代表问题的一个可能解&#xff0c;并且具有位置和速度两个属性。粒…

Vue3:将表格数据下载为excel文件

需求 将表格数据或者其他形式的数据下载为excel文件 技术栈 Vue3、ElementPlus、 实现 1、安装相关的库 下载xlsx 和 file-saver 库 npm install -S file-saver npm install -S xlsx引入XLSX库和FileSaver库 import XLSX from xlsx; import FileSaver from file-saver;…

vue3响应式对象:ref和reactive

ref() <template><button click"changeMsg">改变信息</button><div>{{ msg }}</div><div>{{ man }}</div> </template><script lang"ts"> import { defineComponent,ref,Ref } from vueexport def…

【SEC 学习】美化 Linux 终端

一、步骤 1. 进入 /etc/bash.bashrc vim /etc/bash.bashrc2. 重新加载 bash.bashrc source /etc/bash.bashrc二、各参数指标 符号含义\u当前用户的账号名称\h仅取主机的第一个名字&#xff0c;如上例&#xff0c;则为fc4&#xff0c;.linux则被省略\H完整的主机名称。例如&…

C++STL---Vector、List所要掌握的基本知识

绪论​ 拼着一切代价&#xff0c;奔你的前程。 ——巴尔扎克&#xff1b;本章主要围绕vector和list的使用&#xff0c;以及容器底层迭代器失效问题&#xff0c;同时会有对原码的分析和模拟实现其底层类函数。​​​​话不多说安全带系好&#xff0c;发车啦&#xff08;建议电脑…

Mac电脑配置Dart编程环境

1.安装Dart SDK 官网地址&#xff1a;https://dart.dev/get-dart $brew tap dart-lang/dart$brew install dart 安装后&#xff0c;用命令检测一下是否安装正常。 $brew info dart 2.VS Code配置Dart环境 1).安装VS Code 官网地址&#xff1a;https://code.visualstudio.c…

Python环境下LaTeX数学公式转图像方案调研与探讨

目录 引言方案一&#xff1a;基于LaTeX环境方案二&#xff1a;基于KaTeX(推荐) 方案三&#xff1a;基于Matplotlib写在最后 引言 近来&#xff0c;涉及到一些公式识别的项目&#xff0c;输入是公式的图像&#xff0c;输出是LaTeX格式的数学公式字符串。 这类项目一般都采用深…

pgsql 分组查询,每组取10条

需求&#xff1a; 按照表的字段分组&#xff0c;然后每组取10条结果&#xff0c;返回即可 sql 如下&#xff1a; SELECT* FROM (SELECT chk_id,feature_id,task_id, ROW_NUMBER () OVER (PARTITION BY chk_id ORDER BY chk_id) AS row_num FROM ics_check_report WHERE task…

Ubuntu 23.10(Mantic Minotaur)正式发布,支持Linux 6.5和GNOME 45

导读Canonical 近日正式发布了 Ubuntu 23.10&#xff08;Mantic Minotaur&#xff09;操作系统&#xff0c;其中包含一些最新的 GNU/Linux 技术、改进的硬件支持以及许多其他变化。 Ubuntu 23.10 采用了最新的 Linux 6.5 内核系列&#xff0c;并为 Ubuntu 桌面和服务器增强了 z…

Qt5 Python-docx库的使用,Qt python混合编程,qt 读写word,不依赖office

解决方案的选择 参考&#xff1a; https://www.jianshu.com/p/be68884849c3 因为项目要求不能使用模板方案&#xff0c;不能依赖Office&#xff0c;网上找了一些解决方案进行调研&#xff0c;以下几个方案&#xff1a; OpenOffice: 兼容性差&#xff0c;集成调用难度大LibOffi…

【顺序栈的出栈,链栈的表示和实现,递归定义】

文章目录 顺序栈的出栈 链栈的表示和实现链表的初始化判断链栈是否为空链栈的入栈链栈的出栈 递归定义函数的调用过程 顺序栈的出栈 &#xff08;1&#xff09;判断是否栈空&#xff0c;若空则出错&#xff08;下溢&#xff09;。 &#xff08;2&#xff09;获取栈顶元素e。 &…

【AD9361 数字接口CMOS LVDSSPI】B 并行数据之CMOS 续

续【AD9361 数字接口CMOS &LVDS&SPI】B 并行数据之CMOS 数据总线空闲和周转周期 &#xff08;CMOS&#xff09; P0_D[11&#xff1a;0]和P1_D[11&#xff1a;0]总线信号通常由BBP或AD9361有源驱动。在任何空闲期间&#xff0c;两个组件都会忽略数据总线值。但是&…

MODBUS-RTU从站通信(SMART PLC作为MODBUS-RTU从站)

SMART PLC作为MODBUS-RTU主站通信请参考下面文章链接: 【精选】PLC MODBUS通信优化、提高通信效率避免权限冲突(程序+算法描述)-CSDN博客文章浏览阅读2.5k次,点赞5次,收藏10次。MODBUS通讯非常简单、应用也非常广泛,有些老生常谈的问题,这里不再赘述,感兴趣的可以参看…

基于 ARM+FPGA+AD平台的多类型同步信号采集仪开发及试验验证(一)上位机设计

采集仪上位机设计 本章开发了一款基于 C# 的上位机软件&#xff0c;用于对多类型同步信号采集仪的各项功能 进行操作。从采集仪的数据传输需求出发&#xff0c;上位机利用以太网 UDP 协议实现与采集仪 的数据交互&#xff0c;包括向采集仪发送控制信息与配置信息、接收采…

Vite+Vue3项目全局引入scss文件

前言 Sass 是世界上最成熟、最稳定、最强大的专业级CSS扩展语言&#xff01;在日常项目开发过程中使用非常广泛&#xff0c;今天主要讲一下 ViteVue3 项目中该如何全局引入 scss 文件&#xff0c;引入混合 mixin 文件的不同配置。捎带说一下 Vue2 中的引入方式做一下简单的对比…