数据可视化 | 一文了解什么是相关性分析热力图
数据可视化 | 一文了解什么是相关性分析热力图
相关性热力图是一种强大的数据可视化工具,用于展示多个变量之间的相关性。通过颜色的深浅和变化,它可以直观地表示不同变量之间的相关程度,帮助我们快速识别数据中的模式和趋势。本文将从概念解释、绘制方法到实际案例,全面介绍如何理解和使用相关性热力图。
一、引言
相关性,是统计学中的一个基本概念,用于描述两个或多个变量之间的关系和相互影响。具体来说,相关性衡量的是当一个变量发生变化时,另一个变量如何随之变化。相关性可以帮助我们理解数据中的模式和趋势,从而为进一步的分析和决策提供依据。从类型上来说,相关性分为三种:
- 正相关(Positive Correlation):当一个变量增加时,另一个变量也随之增加,这种关系称为正相关。例如,身高和体重通常呈正相关关系。
- 负相关(Negative Correlation):当一个变量增加时,另一个变量减少,这种关系称为负相关。例如,汽车的行驶速度和到达目的地所需的时间通常呈负相关关系。
- 零相关(No Correlation):当两个变量之间没有明显的线性关系时,这种关系称为零相关。例如,人的鞋码和智商之间通常没有显著的相关性。
相关性热力图,是一种数据可视化工具,用于展示多个变量之间的相关性。它通过颜色的深浅和变化来直观地表示不同变量之间的相关程度,使得复杂的数据关系一目了然。相关性热力图在数据分析、统计学和机器学习中非常有用,能够帮助我们快速识别数据中的模式和趋势,从而为进一步分析提供指导。
本文我们将分享如何绘制相关性热力图以及如何理解相关性热力图。
二、如何理解相关性热力图
下图是一个典型的相关性热力图(使用 Seaborn 库绘制)。
该相关性热力图描述的 California Housing 数据集各个字段的相关性,该数据集来源于1990年美国加利福尼亚州的人口普查数据。数据集中包含了多个街区的住房特征和人口统计信息。具体字段包括:
- longitude:房屋位置经度
- latitude:房屋位置纬度
- housingMedianAge:街区中房屋的中位年龄。
- totalRooms:街区中所有房屋的总房间数。
- totalBedrooms:街区中所有房屋的总卧室数。
- population:街区的人口总数。
- households:街区的家庭总数。
- medianIncome:街区的中位收入(以万美元为单位)。
- medianHouseValue:街区的中位房价(以美元为单位)。
我们从相关性热力图中随便选出一个值,如下图所示:
通过上图可知,选中的值为 0.92,背景颜色为较深的红色,同时该点横轴和纵轴对应的标签分别是 totalRooms 和 households,这表明 California Housing 数据集中的 totalRooms 与 households 两个字段的相关系数为 0.92。
相关系数是一个度量两个变量之间关系强弱和方向的统计量,数值一般在区间 -1 ~ 1 之间,相关系数的绝对值越大,说明两个变量的相关性越高,如果相关系数为正,说明呈现正相关关系,反之则呈现负相关关系,越接近 0,说明相关性越低,为零则说明两变量基本没有相关性。为了让大家一目了然地看到相关性分布,不同大小的相关系数被渲染了不同的颜色,通常暖色(图中为红色)代表正相关,冷色(图中为蓝色)代表负相关。同时由于横轴和纵轴上的标签是完全一样的,所以会存在横轴纵轴两个标签相同时,相关系数为 1,所以图中对角线上的相关系数全部为 1,且对角线两侧内容是沿着对角线对称的。
三、如何绘制热力图
相关性热力图虽然是一种比较高级的数据可视化图形,但制作起来却非常容易,使用 Seaborn 库就可以通过几行简单的代码完成。下面是笔者制作相关性热力图的 Python 代码:
## 第一步:读取下载得到的 California Housing 数据集
import pandas as pd
# 读取 .domain 文件以获取列名
with open('./CaliforniaHousing/cal_housing.domain') as f:
columns = [line.split(':')[0] for line in f.readlines()]
# 读取 .data 文件并指定列名
data = pd.read_csv('./CaliforniaHousing/cal_housing.data', header=None, names=columns)
# 查看前几行数据
data.head()
## 第二步:绘制相关性热力图
# 导入需要用到的数据可视化第三方库,如未安装则需要先安装
import seaborn as sns
import matplotlib.pyplot as plt
# 计算相关系数矩阵
corr_matrix = data.corr()
# 设置绘图尺寸和清晰度
plt.figure(figsize=(9, 6), dpi=300)
# 使用seaborn绘制热力图
sns.heatmap(corr_matrix,
annot=True,
cmap='coolwarm',
vmin=-1,
vmax=1,
center=0)
# 添加标题
plt.title('Correlation Heatmap of California Housing Dataset')
# 显示图形
plt.show()
使用以上代码就可以得到上一节中展示的相关性热力图。
四、总结
💡 本文介绍了数据分析中一种常用的高级数据可视化图形——相关性热力图,它可以帮助我们快速了解数据中的变量相关性,在回归分析中十分重要。相关性热力图的痛点在于,首次接触这种图形的人可能不太容易看懂,需要有人帮助解释才会更加容易理解,而这正是我们推送此文的目的,希望这篇文章能对大家有所帮助。
👉如需获取文章中用到的样例数据和代码,请查看原文数据可视化 | 一文了解什么是相关性分析热力图
五、相关推荐
Python 教学
• Python 教学 | 学习 Python 第一步——环境安装与配置
• Python 教学 | Python 基本数据类型
• Python 教学 | Python 字符串操作(上)
• Python 教学 | Python 字符串操作(下)
• Python 教学 | Python 变量与基本运算
• Python 教学 | 组合数据类型-列表
• Python 教学 | 组合数据类型-集合(内含实例)
• Python 教学 | 组合数据类型 - 字典&元组
• Python 教学 | Python 中的分支结构(判断语句)
• Python 教学 | Python 中的循环结构(上)
• Python 教学 | Python 中的循环结构(下)
• Python 教学 | Python 函数的定义与调用
• Python 教学 | Python 内置函数
• Python 教学 | 最常用的标准库之一 —— os
• Python 教学 | 盘点 Python 数据处理常用标准库
• Python 教学 | “小白”友好型正则表达式教学(一)
• Python 教学 | “小白”友好型正则表达式教学(二)
• Python 教学 | “小白”友好型正则表达式教学(三)
• Python 教学 | 数据处理必备工具之 Pandas(基础篇)
• Python 教学 | 数据处理必备工具之 Pandas(数据的读取与导出)
• Python 教学 | Pandas 数据索引与数据选取
• Python 教学 | Pandas 妙不可言的条件数据筛选
• Python 教学 | Pandas 缺失值与重复值的处理方法
• Python 教学 | Pandas 表格数据行列变换
• Python 教学 | Pandas 表格字段类型精讲(含类型转换)
• Python 教学 | Pandas 数据合并(含目录文件合并案例)
• Python 教学 | Pandas 数据匹配(含实操案例)
• Python 教学 | Pandas 函数应用(apply/map)【上】
• Python 教学 | Pandas 函数应用(apply/map)【下】
• Python 教学 | Pandas 分组聚合与数据排序
• Python 教学 | Pandas 时间数据处理方法
• Python 教学 | 列表推导式 & 字典推导式
• Python 教学 | 一文搞懂面向对象中的“类和实例”
• Python 教学 | Python 学习路线+经验分享,新手必看!
• Python 教学 | 解密 Windows 中的 Path 环境变量
• Python 教学 | Jupyter Notebook 中那些十分有用的魔术命令
Python实战
• Python实战 | 如何使用 Python 调用 API
• Python 实战 | 使用正则表达式从文本中提取指标
• 大数据分析 | 用 Python 做文本词频分析
• 数据治理 | 从“今天中午吃什么”中学习Python文本相似度计算
• 数据治理 | 省下一个亿!一文读懂如何用python读取并处理PDF中的表格(赠送本文所用的PDF文件)
• 数据治理 | 还在人工识别表格呢?Python 调用百度 OCR API 又快又准
• 数据治理 | 如何用 Python 批量压缩/解压缩文件
• 案例分享:使用 Python 批量处理统计年鉴数据(上)
• 案例分享:使用 Python 批量处理统计年鉴数据(下)
• Python 实战 | ChatGPT + Python 实现全自动数据处理/可视化
• ChatGPT在指尖跳舞: open-interpreter实现本地数据采集、处理一条龙
• Python 实战 | 文本分析之文本关键词提取
• Python 实战 | 文本分析工具之HanLP入门
• Python 实战 | 进阶中文分词之 HanLP 词典分词(上)
• Python 实战 | 进阶中文分词之 HanLP 词典分词(下)
• Python实战 | 文本文件编码问题的 Python 解决方案
• Python 实战 | 从 PDF 中提取(框线不全的)表格
• Python 实战 | 利用 Python 做长宽面板转换(附数据&代码)
• Python 实战 | 拆分、合并、转换……请查收这份 PDF 操作手册
• 答疑解惑 | 云桌面用户如何使用 Python 连接数据库读写、处理数据
• Python 实战 | 使用 Python 清洗文本字段中的 HTML 代码
• 答疑解惑 | csv 数据字段错位?导入 Stata 中途报错?到底怎么解决……
• Python 实战 | Python 自动识别文本中的人名、地名、企业名称……
数据可视化
• 数据可视化 | 讲究!用 Python 制作词云图学问多着呢
• 数据可视化 | 地址数据可视化—教你如何绘制地理散点图和热力图
• 数据可视化 | 太酷了!用 Python 绘制3D地理分布图
• 数据可视化 | 用 Python 制作动感十足的动态柱状图
• 数据可视化 | Python绘制多维柱状图:一图展示西部各省人口变
迁【附本文数据和代码】
• 数据可视化 | 3D 柱状图一览各省农民合作社存量近十年变化