发布于2023-03-19 12:45 阅读(753) 评论(0) 点赞(13) 收藏(0)
热力图(heatmap),又称相关系数图,根据热力图中不同方块颜色对应的相关系数的大小,可以判断出变量之间相关性的大小。热力图通过对色块着色来显示数据的统计图表。绘图时,需指定颜色映射的规则。例如,较大的值由较深的颜色表示,较小的值由较浅的颜色表示;较大的值由偏暖的颜色表示,较小的值由较冷的颜色表示等。
热力图可通过颜色深浅变化,优雅地展示数据的差异。热力图适合用于查看总体的情况、发现异常值、显示多个变量之间的差异,以及检测它们之间是否存在任何相关性。
值得注意的是,绘制热力图时,建议选择恰当的调色板,既在视觉上便于区分,也符合所要传达的主旨。
两个变量之间协方差和标准差的商,皮尔逊相关系数计算公式:
我们以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()
绘制的热力图为:
从热力图上可以看到,和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
原文链接:https://blog.csdn.net/AugustMe/article/details/128715756
作者:坚持就是胜利
链接:https://www.pythonheidong.com/blog/article/1940073/7fff7573edaa941ed0e4/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!