【python】python绘制相关性热力图

news2025/1/6 17:19:36

1.介绍

  热力图(heatmap),又称相关系数图,根据热力图中不同方块颜色对应的相关系数的大小,可以判断出变量之间相关性的大小。热力图通过对色块着色来显示数据的统计图表。绘图时,需指定颜色映射的规则。例如,较大的值由较深的颜色表示,较小的值由较浅的颜色表示;较大的值由偏暖的颜色表示,较小的值由较冷的颜色表示等。

  热力图可通过颜色深浅变化,优雅地展示数据的差异。热力图适合用于查看总体的情况、发现异常值、显示多个变量之间的差异,以及检测它们之间是否存在任何相关性。

  值得注意的是,绘制热力图时,建议选择恰当的调色板,既在视觉上便于区分,也符合所要传达的主旨。

2. 代码

  两个变量之间协方差和标准差的商,皮尔逊相关系数计算公式:

  我们以California房价数据集为例,绘制热力图,代码如下:

# -*- coding: utf-8 -*-
"""
Created on Tue Aug  9 09:19:07 2022

@author: augustqi
"""

"""
python==3.9.0
scikit-learn==1.0.2
numpy==1.22.3
pandas==1.4.2
matplotlib==3.5.1
"""

from sklearn.datasets import load_boston
from sklearn.datasets import fetch_california_housing
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns


# housing = load_boston()
housing = fetch_california_housing()
X = housing.data
y = housing.target
print("特征名:", housing.feature_names)

# 数据转为数据表
X_df = pd.DataFrame(data=X, columns=housing.feature_names)
X_df['target'] = y

# 求相关性
data_coor = np.corrcoef(X_df.values, rowvar=0)
data_coor = pd.DataFrame(data=data_coor, columns=X_df.columns, index=X_df.columns)
plt.figure(figsize=(8, 6), facecolor='w') # 底色white
ax = sns.heatmap(data_coor, square=True, annot=True, fmt='.3f', 
                 linewidth=1, cmap='winter',linecolor='white', cbar=True,
                 annot_kws={'size':10,'weight':'normal','color':'white'},
                 cbar_kws={'fraction':0.046, 'pad':0.03}) 
# square=True, 热力图呈现正方形
# annot=True, 热力图上显示数据, True:每个格子上写入数据
# fmt='.3f',热力图上的数据保留3位有效数字
# linewidth=1, 每个格子外框宽度,默认为0
# linecolor='white',每个格子边框颜色,默认白色
# cbar=True, 右侧图例开关,默认True
# annot_kws. 格子中数据字体大小、磅值、颜色设置
# cbar_kws, 图例位置、名称、标签设置
# cmap='YlGnBu', 热图颜色盘,控制热图颜色, cmap取值为:
"""
'Accent', 'Accent_r', 'Blues', 'Blues_r', 'BrBG', 'BrBG_r', 'BuGn', 'BuGn_r', 
'BuPu', 'BuPu_r', 'CMRmap', 'CMRmap_r', 'Dark2', 'Dark2_r', 'GnBu', 'GnBu_r', 
'Greens', 'Greens_r', 'Greys', 'Greys_r', 'OrRd', 'OrRd_r', 'Oranges', 
'Oranges_r', 'PRGn', 'PRGn_r', 'Paired', 'Paired_r', 'Pastel1', 'Pastel1_r', 
'Pastel2', 'Pastel2_r', 'PiYG', 'PiYG_r', 'PuBu', 'PuBuGn', 'PuBuGn_r', 
'PuBu_r', 'PuOr', 'PuOr_r', 'PuRd', 'PuRd_r', 'Purples', 'Purples_r', 'RdBu', 
'RdBu_r', 'RdGy', 'RdGy_r', 'RdPu', 'RdPu_r', 'RdYlBu', 'RdYlBu_r', 'RdYlGn', 
'RdYlGn_r', 'Reds', 'Reds_r', 'Set1', 'Set1_r', 'Set2', 'Set2_r', 'Set3', 
'Set3_r', 'Spectral', 'Spectral_r', 'Wistia', 'Wistia_r', 'YlGn', 'YlGnBu', 
'YlGnBu_r', 'YlGn_r', 'YlOrBr', 'YlOrBr_r', 'YlOrRd', 'YlOrRd_r', 'afmhot', 
'afmhot_r', 'autumn', 'autumn_r', 'binary', 'binary_r', 'bone', 'bone_r', 
'brg', 'brg_r', 'bwr', 'bwr_r', 'cividis', 'cividis_r', 'cool', 'cool_r', 
'coolwarm', 'coolwarm_r', 'copper', 'copper_r', 'crest', 'crest_r', 
'cubehelix', 'cubehelix_r', 'flag', 'flag_r', 'flare', 'flare_r', 'gist_earth', 
'gist_earth_r', 'gist_gray', 'gist_gray_r', 'gist_heat', 'gist_heat_r', 
'gist_ncar', 'gist_ncar_r', 'gist_rainbow', 'gist_rainbow_r', 'gist_stern', 
'gist_stern_r', 'gist_yarg', 'gist_yarg_r', 'gnuplot', 'gnuplot2', 'gnuplot2_r', 
'gnuplot_r', 'gray', 'gray_r', 'hot', 'hot_r', 'hsv', 'hsv_r', 'icefire', 
'icefire_r', 'inferno', 'inferno_r', 'jet', 'jet_r', 'magma', 'magma_r', 'mako', 
'mako_r', 'nipy_spectral', 'nipy_spectral_r', 'ocean', 'ocean_r', 'pink', 
'pink_r', 'plasma', 'plasma_r', 'prism', 'prism_r', 'rainbow', 'rainbow_r', 
'rocket', 'rocket_r', 'seismic', 'seismic_r', 'spring', 'spring_r', 'summer', 
'summer_r', 'tab10', 'tab10_r', 'tab20', 'tab20_r', 'tab20b', 'tab20b_r', 
'tab20c', 'tab20c_r', 'terrain', 'terrain_r', 'turbo', 'turbo_r', 'twilight', 
'twilight_r', 'twilight_shifted', 'twilight_shifted_r', 'viridis', 'viridis_r', 
'vlag', 'vlag_r', 'winter', 'winter_r'
"""


plt.rcParams['font.sans-serif']= ['Times New Roman']    # 设置字体
# plt.rcParams['font.sans-serif']= ['Arial Unicode MS'] # 显示中文
plt.xticks(rotation=45)  # x轴的标签旋转45度
plt.savefig("heatmap_california.png", dpi=600)
plt.show()

3.结果

绘制的热力图为:

从热力图上可以看到,和target相关性最大的是MedInc(收入中位数)变量;AveRooms和AveBedrms两个变量的正相关性较强。

文章首发于微信公众号:AIexplore
https://mp.weixin.qq.com/s/kRL3A9iH_LhxbQbCa6vJsA

参考资料

[1]https://matplotlib.org/stable/gallery/images_contours_and_fields/image_annotated_heatmap.html
[2]https://zhuanlan.zhihu.com/p/506059576
[3]https://zhuanlan.zhihu.com/p/364624304
[4]https://zhuanlan.zhihu.com/p/165426873

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

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

相关文章

从运营小程序到实现数字化生态闭环还差几步?

近年来,不少企业纷纷开始关注小程序的开发。对于用户来说,小程序最大的好处就是能够即点即用,体验便捷。不知你是否发现,小程序经济已经开始制约中小企业的服务与合作。 对于一般的中小企业乃至大企业里没有什么IT预算的部门&…

缺省参数!C++教你如何成为一名优秀的舔狗

👑专栏内容:C学习笔记⛪个人主页:子夜的星的主页💕座右铭:日拱一卒,功不唐捐 目录一、前言二、缺省参数1、缺省参数的定义2、缺省参数的分类Ⅰ、全缺省参数Ⅱ、半缺省参数三、注意事项1、直给中间的参数传参…

Docker中的容器命令

1、新建启动容器 docker run 镜像名 参数: -it 启动前台一个交互的终端 --name 启动容器后,赋予容器一个名字 -d: 后台运行容器,并返回容器ID,也即启动守护式容器; -P: 随机端口映射; -p: 指定端口映…

Svelte框架实现表格协同文档

首先,从框架搭建上,本篇示例采用当下流行的前后端分离的开发方式,前端使用npm作为脚手架搭建Svelte框架。 后端使用Java的SpringBoot作为后端框架。 首先,介绍下在前端Svelte框架下搭建在线表格编辑器。 1、在pageage.json文件中引入相关资源…

ANR问题分析

ANR概念 anr是指应用程序无响应,Android系统对于一些事件需要在一定时间范围内完成,如果超过预定时间未能得到有效响应或者响应时间过长,都会造成anr。通常发生anr时,系统会弹出一个提示框,让用户知道,该程…

AppScan介绍和安装

第一节-AppScan介绍和安装 1.简介 Appscan 10中文版是是全新网络安全漏洞扫描软件,软件可以直接可以对OS命令、SSRF和XXE攻击等漏洞进行检测,使得漏洞检测更加容易,提高漏洞的扫描效率。软件同时支持动态、静态、互动分析三种不同的测试功能…

OVN实验----NAT

概述 在L2互通、L3互通实验基础上通过NAT实现访问公网。 架构图如下, 这里两台逻辑路由器LR1和GLR是通过一台逻辑交换机LSjoin互连的, GLR和物理网络设备通过LSlocal相连。 物理拓扑 如上一个实验OVN实验----L2互通 逻辑拓扑 配置 开始实验前先检查…

设计模式之装饰者模式

装饰者模式 定义 先上定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。 优缺点 优点: 1,装饰器是继承的有力补充,比继承灵活,在不改…

【进阶C语言】文件操作

文章目录一.文件1.文件的功能2.文件的分类3.文件路径绝对路径相对路径4.文件信息区5.文件缓冲区6.流的概念7.输入输出二.文件函数1.打开与关闭文件打开文件——fopen返回类型参数关闭文件——fclose返回类型参数2. 顺序读写1.输入输出字符输入字符函数——fgetc返回类型函数参数…

新享科技UniPro将敏捷理念数字化 助力企业迎接2023

2023年新年伊始,“复苏”和“希望”成了越来越多国内企业和消费者的直接感受,与此同时,国际经济也从疫情中缓慢“恢复”过来,特斯拉在中国区掀起了新一轮降价风潮,而行业“销冠”比亚迪却高调发布了百万级新车。如同晴…

websocket显示实时消息

websocket实现实时消息展示 前面介绍过websocket聊天功能的实现,不清楚的可以先看下 websocket实现在线聊天 https://blog.csdn.net/qq_51076413/article/details/124644500 之前发过websocket的相关使用和一对一聊天的demo代码,这里是针对上几篇文章的补充&#x…

Nacos服务注册与发现源码剖析

文章目录前提介绍Nacos源码下载Nacos客户端源码Spring Cloud Starter Nacos 源码Nacos服务端源码前提介绍 服务注册与发现作用主要是为了更好的管理众多的服务,不论Nacos还是Zookeeper、Eureka,作为注册中心都是为了解决以下两个问题: 屏蔽…

【论文写作】英文写作工具推荐及使用教程:DeepL(翻译) + EasyEssay(扩写) + QuillBot(改写润色)

文章目录一、DeepL二、EasyEssay2.1 润写2.2 扩写2.3 生成文章2.4 英文查重三、QuillBot一、DeepL DeepL官网 DeepL的主要作用是翻译,一开始我也是在B站上看到有人推荐用这款翻译工具的,抱着试一试的心态去用了一下,感觉翻译效果真的很不错&a…

【贪心】AcWing 803. 区间选点

905. 区间选点 文章目录题目描述输入格式:输出格式:数据范围输入样例输出样例方法:贪心解题思路代码复杂度分析:题目描述 给定 N 个闭区间 [ai,bi][a_i,b_i][ai​,bi​],请你在数轴上选择尽量少的点,使得每…

利用时间序列预测电量,冷量和压缩空气量

利用时间序列预测电量,冷量和压缩空气量背景分析与思路代码结果一,电量预测二,冷量预测三,压缩空气预测调优一,电量预测(m6)二,冷量预测三,压缩空气预测背景 根据提供的数据,详见附…

企业开发项目【1】— — 流程、开发环境搭建模板

企业开发项目【1】— — 流程、开发环境搭建模板 以黑马的学成在线为例 1 项目背景 2 项目介绍 3 开发环境搭建 3.1 开发工具配置(后端) 3.1.1 Idea配置 环境编码 编译级别配置 project structure - 设置JDK版本和编译级别3. 自动导包设置 IDEA可以…

远距离车载高速网络通讯方案

一 车载网络的发展 随着电子、半导体和通讯等行业的快速发展,汽车智能化的诉求也愈发强烈。越来越多的传感器和处理器的应用推动了汽车的智能化和电气化,与此同时,也使得ECU(电子控制单元)的数量快速增加。随着自动驾…

基于“python+”潮汐、风驱动循环、风暴潮等海洋水动力模拟

ADCIRC是新一代海洋水动力计算模型,它采用了非结构三角形网格广义波动连续方程的设计,在提高计算精确度的同时还减小了计算时间。被广泛应用于:模拟潮汐和风驱动的循环、预测风暴潮和洪水和近岸海上作业等。 除此之外,ADCIRC也是我…

目前市场上比较好的oa办公系统企业管理软件有哪些?

行政小李拿着《疫情期间春节返乡填报单》在工位之间来回穿梭…… 财务小王把年终奖金和福利方法拿给老板签字…… 行政小李的和人事小赵回回都因为入职新人培训的事情扯皮…… 后勤小郑每次办公物资的整理都要做半天…… OA系统本就是为企业内部的员工沟通、工作效率提高、协作…

WebDAV之葫芦儿·派盘+BookxNote

BookxNote 支持WebDAV方式连接葫芦儿派盘。 BookxNote是全新设计的电子书阅读学习笔记软件,以不同的思维方式重塑我们的学习过程。一边阅读一边划重点,提供多种划重点笔记工具,包括直线、矩形、圆形、高亮文本,图片摘录。高亮的文本自动编辑为重点的批注内容,还可以对重点…