【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中的stripplot
和swarmplot
函数用于创建这种类型的图。
- 可以通过指定
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)
类别分布图用于显示类别数据的分布,常用的有boxplot
、violinplot
和boxenplot
等。
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中常用的函数包括barplot
和pointplot。
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提供了几个函数来创建类别单变量图,其中包括countplot
和boxenplot
。
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}
是用于自定义散点图的样式,设置点的大小和透明度。
相关文章:

【100天精通Python】Day72:Python可视化_一文掌握Seaborn库的使用《二》_分类数据可视化,线性模型和参数拟合的可视化,示例+代码
目录 1. 分类数据的可视化 1.1 类别散点图(Categorical Scatter Plot) 1.2 类别分布图(Categorical Distribution Plot) 1.3 类别估计图(Categorical Estimate Plot) 1.4 类别单变量图(Cat…...

(二开)Flink 修改源码拓展 SQL 语法
1、Flink 扩展 calcite 中的语法解析 1)定义需要的 SqlNode 节点类-以 SqlShowCatalogs 为例 a)类位置 flink/flink-table/flink-sql-parser/src/main/java/org/apache/flink/sql/parser/dql/SqlShowCatalogs.java 核心方法: Override pu…...
java中spi与api的区别
近期看了很多开源组件的源码,发现很多地方地方用到了 spi 的功能,开始思考 spi 与 api 的区别 发现 spi 侧重于抽象层次的概念,目前接触到的就是 java 里大量用到了这个,通过定义的接口来抽象通用的功能,然而 api 是不…...
【Android知识笔记】插件化专题(二)
在上一篇专题【Android知识笔记】插件化专题(一) 中详细介绍了Android三种插件化方案的实现以及它们的优缺点对比总结等。这一篇中主要来看一下一些插件化开源框架的实现原理,当然市场上的插件化框架有很多,层出不穷,如 DiDi VirtualApk、360 Replugin 等。本人在过去的工…...
赶紧收藏!史上最全IDEA快捷键大全
参考 IntelliJ IDEA 的官网,列举出了IntelliJ IDEA(Windows 版)的所有快捷键。 建议收藏,有需要的时候根据关键字来查找! idea专业版获取 kdocs.cn/l/ctYoaM6evJkl 该快捷键共分 16 类,可以方便的按各类…...

IntelliJ IDEA 把package包展开和压缩
想要展开就把对勾取消,想要压缩就勾上...
Python——自动创建文件夹
文章目录 前言一、判断文件夹或者文件是否存在二、创建一级文件夹三、创建多级文件夹四、代码封装前言 利用 Python编程语言实现自动创建文件夹,程序以函数形式封装,直接按要求传参即可调用。 在python中没有直接针对文件夹的操作方法,可以借助模块os,os.path和shutil来操作…...

Leetcode—21.合并两个有序链表【简单】
2023每日刷题(十三) Leetcode—21.合并两个有序链表 直接法实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* mergeTwoLists(struct ListNode* list1, struct…...

数据链路层和DNS之间的那些事~
数据链路层,考虑的是两个节点之间的传输。这里面的典型协议也很多,最知名的就是“以太网”。我们本篇主要介绍的就是以太网协议。这个协议规定了数据链路层,也规定了物理层的内容。 目录 以太网帧格式 帧头 载荷 帧尾 DNS 从输入URL到…...

Spring-声明式事务
声明式事务 一、简介1、准备工作2、测试 二、声明式事务概念1、编程式事务2、声明式事务3、基于注解的声明式事务1.测试无事务情况2.加入事务①Transactional注解标识的位置②事务属性:只读③事务属性:超时④事务属性:回滚策略⑤事务属性&…...

腾讯云轻量服务器地域选择教程,一篇文章就够了
腾讯云轻量应用服务器地域是指轻量服务器数据中心所在的地理位置,如上海、广州和北京等地域,如何选择地域?腾讯云百科txybk.com建议地域选择遵循就近原则,用户距离轻量服务器地域越近,网络延迟越低,速度就越…...

【斗罗二】王东升级三环,戴华斌挑衅,雨浩单手接鼎订下赌约
【侵权联系删除】【文/郑尔巴金】 深度爆料,《绝世唐门》第20集,一场瞩目的战斗即将爆发。王冬,这位一年级的强攻系班长,将与戴华斌进行一场激烈的较量。王冬拥有三大武魂,其中最为人们所熟知的是那光明女神蝶&#x…...
洛谷 B2135:单词替换
【题目来源】https://www.luogu.com.cn/problem/B2135【题目描述】 输入一个字符串,以回车结束(字符串长度 ≤200)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换…...

IDEA中application.properties文件中文乱码
现象: 原因: 项目编码格式与IDEA编码格式不一致导致的 解决办法: 在File->Settings->Editor->File Encodings选项中,将Global Encoding,Project Encoding,Default encoding for properties files这三个选项置为一致&a…...

Rust 模块系统
文章目录 模块系统crate包cargo 创建库库的使用 模块系统 Rust的{模块系统|the module system},包括: * 包(Packages): Cargo 的一个功能,它允许你构建、测试和分享 crate。 * Crates :一个模…...
面向服务架构-架构师(六十四)
SOA概述和发展、参考架构、协议和规范、标准和原则、设计模式、构件和实施。 SOA概述和发展 服务指系统对外提供的功能,SOA是一种应用框架。 微服务去掉了ESB企业服务总线,SOA集中式,SOA和微服务的区别: 微服务更加精细。服务…...

Linux之系统编程
1.yum 1.yum list可以出现所有可下载的程序 辅助grep进行查找 2.yum install可以下载并安装 3.yum remove可以卸载程序 不同的商业操作系统内核都是一样的,主要是配套社区不一样。 开源组织,各大公司,既得利益者。 同上 基础软件源可以保证…...

信道数据传输速率、信号传播速度——参考《天勤计算机网络》
一、缘起题目 二、解析 三、总结 信道数据传输速率和信号传播速度是两个不同的概念。 3.1 信道数据传输速率(Channel Data Transfer Rate) 指的是在通信系统中,通过信道传输的数据量,通常以 比特率(bits per second…...

微信小程序vue+uniapp旅游景点门票预订系统 名胜风景推荐系统
与此同时越来越多的旅游公司建立了自己的基于微信小程序的名胜风景推荐平台,管理员通过网站可以添加用户、景点分类、景点信息、在线预订、最新推荐,用户可以对景点信息进行在线预订,以及开展电子商务等。互联网的世界里蕴藏无限生机…...
每日一题之二分查找(一)
每日一题之二分查找(一) 1.题目(搜索插入位置) 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
WEB3全栈开发——面试专业技能点P7前端与链上集成
一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...