可视化交叉验证热力图python 还在一味追求看似漂亮
最初看到热力图时,你是不是会从内心发出惊呼,看着特别有感觉?
(资料图片)
那老海就问第二个问题了,然后你还能看出什么来?
颜色有深有浅?还有什么?能看出哪个区域大吗?到底又大多少?
哈哈,这种感觉就是热力图的特点:如同蒙面美人的图表类型!
OK,什么是热力图?热力图 (Heat Map),“热力图” 一词最初是由软件设计师提出并创造的,专门用来描述实时金融市场信息的图表类型。注意是软件设计师提出的,不是视觉设计师,更不是数据分析师!
正因如此,就如同南丁格尔玫瑰图一样,都是特殊出身,因此用途局限性非常大。
最早的热力图,都是在矩形色块加上颜色变换。而当今我们说的大多是经过平滑模糊的热力图谱,这样的热力图更容易让人们理解和解读。
热力图的基本数据样式不同的特征字段,在不同的数值上的统计情况,统计分布不同则颜色也变化。
热力图的使用建议热力图在绘图前尽量统一数据量纲、或者进行归一化标准化处理热力图的主要应用在整体全局的数据呈现,不适合局部精准数据展示热力图的颜色带来强烈的视觉冲击力,数据准确度上较弱,很难来分辨具体大小热力图常用来用表达分布,所以一般情况用彩虹色系(rainbow)来传达这个分布变化热力图背景常常是图片或地图,因此不需要必须有坐标轴。下面开始具体的操作案例准备工作## 初始字体设置,设置好可避免很多麻烦plt.rcParams["font.sans-serif"]=["Source Han Sans CN"] # 显示中文不乱码,思源黑体plt.rcParams["font.size"] = 22 # 设置图表全局字体大小,后期某个元素的字体大小可以自行调整plt.rcParams["axes.unicode_minus"] = False # 显示负数不乱码## 初始化图表大小plt.rcParams["figure.figsize"] = (20.0, 8.0) # 设置figure_size尺寸## 初始化图表分辨率质量plt.rcParams["savefig.dpi"] = 300 # 设置图表保存时的像素分辨率plt.rcParams["figure.dpi"] = 300 # 设置图表绘制时的像素分辨率## 图表的颜色自定义colors = ["#dc2624", "#2b4750", "#45a0a2", "#e87a59","#7dcaa9", "#649E7D", "#dc8018", "#C89F91","#6c6d6c", "#4f6268", "#c7cccf"]plt.rcParams["axes.prop_cycle"] = plt.cycler( color=colors)path = "D:\系列文章\"# 自定义文件路径,可以自行设定os.chdir(path)# 设置为该路径为工作路径,一般存放数据源文件
Financial_data = pd.read_excel("虚拟演示案例数据.xlsx",sheet_name="二维表")Financial_data
Financial_data = pd.read_excel("虚拟演示案例数据.xlsx",sheet_name="二维表")Financial_data
最基本的热力图原理,方便我们理解热力这个概念是什么
plt.rcParams["figure.figsize"] = (10, 10) # 设置figure_size尺寸plt.rcParams["font.size"] = 10 # 设置图表全局字体大小,后期某个元素的字体大小可以自行调整# Financial_data = Financial_data.drop("分类",axis=1)targetlist = Financial_data.columns[1:] # 选择需要的字段heatdata = round(Financial_data.loc[:,targetlist]/1000) # 为了展示方便,数据统一除以1000,并取四舍五入取整数# 利用sns.heatmap来画热图sns.heatmap(heatdata, # 设置数据源cmap="Greens", # 设置热图配色annot=True, # 开启设置显示数字,默认不显示annot_kws={"size":8}, # 设置显示数字的大小vmax=10, # 设置显示范围最大值vmin=0, # 设置显示范围最小值center=5, # 设置颜色显示中心的数值,来控制yticklabels=True, # 设置Y轴标签是否显示xticklabels=True, # 设置X轴标签是否显示,默认为显示# xticklabels=4, # 可以设置显示哪些标签或者隐藏部分标签,避免图像混乱cbar=True, # 设置颜色栏是否显示,默认为显示linewidths=2, # 格子之间的间隔距离linecolor="white") # 格子之间的间隔颜色sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到plt.show()
可自定义我们需要参考的对比对象
plt.rcParams["figure.figsize"] = (10, 10) # 设置figure_size尺寸plt.rcParams["font.size"] = 10 # 设置图表全局字体大小,后期某个元素的字体大小可以自行调整# Financial_data = Financial_data.drop("分类",axis=1)# targetlist = Financial_data.columns[:] # 选择需要的字段heatdata = Financial_data.set_index("门店城市",drop=True) # 设置参考对象列作为index索引# corr_matrix=heatdata.corr()# 利用sns.heatmap来画热图sns.heatmap(heatdata, # 设置数据源cmap="Greens", # 设置热图配色annot=True, # 设置显示数字vmax=10, # 设置显示范围最大值vmin=0, # 设置显示范围最小值center=5, # 设置颜色显示中心的数值,来控制linewidths=2) # 格子之间的间隔距离sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到plt.show()
除了查看统计分布,还可以查看不同变量之间的相关性,常用在特征选择上
plt.rcParams["figure.figsize"] = (10, 10) # 设置figure_size尺寸plt.rcParams["font.size"] = 10 # 设置图表全局字体大小,后期某个元素的字体大小可以自行调整# Financial_data = Financial_data.drop("分类",axis=1)targetlist = Financial_data.columns[1:] # 选择需要的字段heatdata = round(Financial_data.loc[:,targetlist]/1000) # 为了展示方便,数据统一除以1000,并取四舍五入取整数corr_matrix=heatdata.corr()# 利用sns.heatmap来画热图sns.heatmap(corr_matrix, # 设置数据源cmap="Greens", # 设置热图配色annot=True, # 设置显示数字vmax=1, # 设置显示范围最大值vmin=0, # 设置显示范围最小值center=5, # 设置颜色显示中心的数值,来控制linewidths=2) # 格子之间的间隔距离sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到plt.show()
这是相关矩阵热力图的简化版,因为对角矩阵的一半元素都是相同的,所以可以简化
plt.rcParams["figure.figsize"] = (10, 10) # 设置figure_size尺寸plt.rcParams["font.size"] = 10 # 设置图表全局字体大小,后期某个元素的字体大小可以自行调整# Financial_data = Financial_data.drop("分类",axis=1)targetlist = Financial_data.columns[1:] # 选择需要的字段heatdata = round(Financial_data.loc[:,targetlist]/1000) # 为了展示方便,数据统一除以1000,并取四舍五入取整数# 极值化MAX-MINnormalization_matrix=(heatdata-heatdata.min())/heatdata.max()# 正则化normalization_matrix=(heatdata-heatdata.mean())/heatdata.std()# 利用sns.heatmap来画热图sns.heatmap(normalization_matrix, # 设置数据源cmap="Greens", # 设置热图配色annot=True, # 设置显示数字vmax=1, # 设置显示范围最大值vmin=0, # 设置显示范围最小值center=5, # 设置颜色显示中心的数值,来控制linewidths=2) # 格子之间的间隔距离sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到plt.show()
有时数据的量纲规模变化很大,此时建议统一数据量纲,效果会好些
plt.rcParams["figure.figsize"] = (10, 10) # 设置figure_size尺寸plt.rcParams["font.size"] = 10 # 设置图表全局字体大小,后期某个元素的字体大小可以自行调整# Financial_data = Financial_data.drop("分类",axis=1)targetlist = Financial_data.columns[1:] # 选择需要的字段heatdata = round(Financial_data.loc[:,targetlist]/1000) # 为了展示方便,数据统一除以1000,并取四舍五入取整数# 极值化MAX-MINnormalization_matrix=(heatdata-heatdata.min())/heatdata.max()# 正则化normalization_matrix=(heatdata-heatdata.mean())/heatdata.std()# 利用sns.heatmap来画热图sns.heatmap(normalization_matrix, # 设置数据源cmap="Greens", # 设置热图配色annot=True, # 设置显示数字vmax=1, # 设置显示范围最大值vmin=0, # 设置显示范围最小值center=5, # 设置颜色显示中心的数值,来控制linewidths=2) # 格子之间的间隔距离sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到plt.show()
这是混合图表应用,用途特别有些,有时候数据图表都堆在一起,看着就乱,不推荐
plt.rcParams["figure.figsize"] = (10, 10) # 设置figure_size尺寸plt.rcParams["font.size"] = 10 # 设置图表全局字体大小,后期某个元素的字体大小可以自行调整heatdata = Financial_data.set_index("门店城市",drop=True) # 设置参考对象列作为index索引# # 利用sns.heatmap来画热图# sns.heatmap(heatdata, # 设置数据源# cmap="Greens", # 设置热图配色# annot=True, # 设置显示数字# vmax=1, # 设置显示范围最大值# vmin=0, # 设置显示范围最小值# center=5, # 设置颜色显示中心的数值,来控制# linewidths=2) # 格子之间的间隔距离# 距离相似性的设置sns.clustermap(heatdata.iloc[:20,:],metric="correlation", # 距离相似性,设置为相似性:"correlation",欧氏距离:"euclidean"method="single", # 聚类的方法,设置为最近点算法:"single",方差最小化算法:"Ward"cmap="Blues", # 设置热图配色standard_scale=1, # 归一化设置,还可设置z_score=1的方法robust=True, # 离群值检验,默认为不开启,这里设置开启离群值研究# row_colors=row_colors)sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到plt.show()
上一篇介绍气泡图,而热力图给人的视觉冲击力更强,当然也就变得更不精准
我们使用图表的目标不同,选择图表时就得非常注意,
热力图我一般是不会选择的,商业分析一般要求务必表达精准,所以它不适合
更多的时候是在做机器学习的特征选择时,会探索一下变量间的相关性如何。
OK,今天先到这里了,老海日常随笔总结,码字不易,初心不改!
如果觉得喜欢,请动动小手关注和转发,鼓励一下我们。
我是老海,来自数据炼金术师
,标签:
推荐文章
- 贵州茅台夺回“市值一哥”席位 谁能坐稳中国上市公司的宝座?
- 大千生态接盘方曝光 高管之子近期买卖过上市公司
- 绥化全域低风险!黑龙江绥化北林区一地调整为低风险
- 走访抗美援朝纪念馆:长津湖的寒冷,与战斗一样残酷
- 节后第一天北京白天晴或多云利于出行 夜间起秋雨或再上线
- 走近网瘾少年们:他们沉迷网络的病根何在?
- “双减”后首个长假:亲子游、研学游需求集中释放
- 获2021年诺奖的蛋白,结构由中国学者率先解析
- 他从一窍不通的“门外汉”,到重装空投“兵专家”
- 升旗、巡岛、护航标、写日志,他们一生守护一座岛
- 中国故事丨“沉浸式”盘点今年的教育好声音!
- 农业农村部:确保秋粮丰收到手、明年夏季粮油播种
- “双减”出台两个月,组合拳如何直击减负难点?
- 《山海情》里“凌教授”的巨菌草丰收啦
- 且看新疆展新颜
- 天山脚下,触摸丝路发展新脉动
- 160万骑手疑似“被个体户”?平台不能当甩手掌柜
- 网游新政下,未成年人防沉迷的“主战场”在哪?
- “辱华车贴”商家及客服被行拘,处罚要不放过每一环
- 沙害是自然界的恶魔,而他是荒沙碱滩的征服者
- 面对婚姻,“互联网世代”的年轻人在忧虑什么?
- IP类城市缘何吸引力强?玩法创新带动游客年轻化
- 国庆主题花坛持续展摆至重阳节
- 都市小资还是潮流乐享?花草茶市场呈爆发性增长
- 从1.3万元降到700元,起诉书揭秘心脏支架“玄机”
- 北京国庆7天接待游客超861万人次 冬奥线路受青睐
- 陈毅元帅长子忆父亲叮嘱:你们自己学习要好,就可以做很多事儿
- 报告显示:这个国庆假期,粤川浙桂赣旅游热度最高
- 中国科技人才大数据:广东总量第一,“北上”这类人才多
- 嘉陵江出现有记录以来最强秋汛
- 全国模范法官周淑琴:为乡村群众点燃法治明灯
- 线上教学模式被盯上,网络付费刷课形成灰色产业链
- 云南保山:170公里边境线,4000余人日夜值守
- 警方查处故宫周边各类违法人员12人
- 农业农村部:确保秋粮丰收到手、明年夏季粮油播种
- 受南海热带低压影响 海南海口三港预计停运将持续到10日白天
- 多地网友投诉遭遇旅游消费骗局,呼吁有关部门严查乱象
- 神经科学“罗塞塔石碑”来了:迄今为止最完整的大脑细胞图谱
- 汾河新绛段发生决口
- 陕西支援14省份采暖季保供用煤3900万吨
- 这场红色故事“云比拼”,穿越时空为我们指引方向
- 受琼州海峡封航影响 10月7日、8日进出海南岛旅客列车停运
- 辽宁省工信厅发布10月8日电力缺口橙色预警
- 广州10月8日至20日对所有从省外来(返)穗人员实施核酸检测
- 假期怎么过得这么快?国庆5.15亿人次出游,你咋过的?
- 国庆假期全国道路交通总体安全平稳有序
- 哈尔滨市南岗区爱达88小区将调整为低风险地区
- 新疆霍尔果斯市2例无症状感染者新冠病毒均为德尔塔变异株
- 百闻不如一见——北京大学留学生参访新疆
- 看,生机勃勃的中国
- 国庆假期中国预计发送旅客4.03亿人次
- 新疆兵团可克达拉市:195名密接者已全部隔离医学观察
- 山西平遥消防4天29次救援:拖着腿走路也要完成任务
- 国庆假期北京接待游客861.1万人次
- 冷空气自西向东影响中国大部地区 气温将下降4℃至6℃
- 新疆哈密市巴里坤县发生4.3级地震 震源深度9千米
- 国庆假期中国国内旅游出游5.15亿人次
- 公安部交管局:国庆假期日均出动警力18万余人次,5位交警辅警牺牲
- 受南海热带低压影响广东将暂别高温天气
- “数说”杭州无障碍改造:触摸城市“爱的厚度”
- 新疆霍尔果斯无症状感染者新冠病毒属德尔塔变异株 未发现高度同源的基因组序列
- 新疆伊犁州:妥善做好滞留旅客安置返回工作
- 国庆假期广西累计接待游客逾3611万人次 实现旅游消费272.41亿元
- 2021年MAGIC3上海市青少年三对三超级篮球赛落幕
- 新疆兵团第四师可克达拉市1名无症状感染者为餐饮从业人员
- 哥伦比亚遇上广州:洋茶人“云上”喫茶 传播中国茶“味道”
- 厦门同安区四区域调整为低风险 全市无中高风险地区
- 直径2米“面气球”亮相 山西首届“寿阳味道”美食大赛启幕
- 世界第一埋深高速公路隧道大峡谷隧道出口端斜井掘进完成
- 浙南沿海村村发展有妙招 搭乘共富快车打造“海上花园”
- 新疆霍尔果斯两例无症状感染者新冠病毒均属德尔塔变异株
- 南沙港铁路国庆假期不停工 力争今年年底开通
- 添加陌生人为好友 内蒙古两女子被骗126万
- 中国国庆假期出行热:数字改变“关键小事”
- 水能载物亦能“生金” 浙江遂昌山村以水为媒奔共富
- 铁路人国庆雨中巡查排险记:一身雨衣、一把铁锹保安全畅通
- 铁路迎返程高峰 西安局集团公司加开79趟高铁列车
- 受热带低压影响 琼州海峡北岸等待过海车辆排长龙
- 哈尔滨市学校有序恢复线下教学
- 哈尔滨一地风险等级调整为低风险
- 从进“培训班”到看《长津湖》
- 安徽黄山国庆假期迎客12万余人 旅游市场稳步复苏
- 山西解除持续近90小时的暴雨四级应急响应
- 科学拦峰错峰削峰 嘉陵江洪水过境重庆中心城区“有惊无险”
- 粤高速大湾区路段假期车流集中 跨珠江口通道尤甚
- 千年街区“非遗”风催热国庆假期本地游
- “颜值担当”里的中国,映照“万物和谐”新气象
- 杭州“十一”假期后初中取消统一早读
- 济南趵突泉地下水位创1966年以来最高纪录
- 厦门中高风险地区清零 撤除离厦通道查验点
- 陕西境内21条河流出现洪峰 渭河3号洪水复涨
- 国庆假期北京市公园风景区共纳客687万人次
- 平遥古城城墙局部坍塌,修缮程序已对接启动
- 300年古村落迭代破圈 化身旅游打卡新地标
X 关闭
资讯
X 关闭