python热力图实现

目录

一、数据无量纲化处理 (热力图)

1.数据无量纲化处理(仅介绍本文用到的方法):min-max归一化

2.代码展示

3.效果展示

二、皮尔斯系数相关(热力图)

1.数学知识

2.代码展示(有不懂的可以私聊)

3.seaborn.heatmap属性介绍

1)Seaborn是基于matplotlib的Python可视化库

2)参数输出(均为默认值)

3)具体介绍

(1)热力图输入数据参数

(2)热力图矩阵块颜色参数

(3)热力图矩阵块注释参数

(4)热力图矩阵块之间间隔及间隔线参数

(5)热力图颜色刻度条参数

(6)square:设置热力图矩阵小块形状,默认值是False

4效果展示


一、数据无量纲化处理 (热力图)

1.数据无量纲化处理(仅介绍本文用到的方法):min-max归一化

该方法是对原始数据进行线性变换,将其映射到[0,1]之间,该方法也被称为离差标准化。

上式中,min是样本的最小值,max是样本的最大值。由于最大值与最小值可能是动态变化的,同时也非常容易受噪声(异常点、离群点)影响,因此一般适合小数据的场景。此外,该方法还有两点好处:

   1) 如果某属性/特征的方差很小,如身高:np.array([[1.70],[1.71],[1.72],[1.70],[1.73]]),实际5条数据在身高这个特征上是有差异的,但是却很微弱,这样不利于模型的学习,进行min-max归一化后为:array([[ 0. ], [ 0.33333333], [ 0.66666667], [ 0. ], [ 1. ]]),相当于放大了差异;

   2) 维持稀疏矩阵中为0的条目。

2.代码展示

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_winewine = load_wine()
data = wine.data  # 数据
lables = wine.target  # 标签
feaures = wine.feature_names
df = pd.DataFrame(data, columns=feaures)  # 原始数据# 第一步:无量纲化
def standareData(df):"""df : 原始数据return : data 标准化的数据"""data = pd.DataFrame(index=df.index)  # 列名,一个新的dataframecolumns = df.columns.tolist()  # 将列名提取出来for col in columns:d = df[col]max = d.max()min = d.min()mean = d.mean()data[col] = ((d - mean) / (max - min)).tolist()return data#  某一列当做参照序列,其他为对比序列
def graOne(Data, m=0):"""return:"""columns = Data.columns.tolist()  # 将列名提取出来# 第一步:无量纲化data = standareData(Data)referenceSeq = data.iloc[:, m]  # 参考序列data.drop(columns[m], axis=1, inplace=True)  # 删除参考列compareSeq = data.iloc[:, 0:]  # 对比序列row, col = compareSeq.shape# 第二步:参考序列 - 对比序列data_sub = np.zeros([row, col])for i in range(col):for j in range(row):data_sub[j, i] = abs(referenceSeq[j] - compareSeq.iloc[j, i])# 找出最大值和最小值maxVal = np.max(data_sub)minVal = np.min(data_sub)cisi = np.zeros([row, col])for i in range(row):for j in range(col):cisi[i, j] = (minVal + 0.5 * maxVal) / (data_sub[i, j] + 0.5 * maxVal)# 第三步:计算关联度result = [np.mean(cisi[:, i]) for i in range(col)]result.insert(m, 1)  # 参照列为1return pd.DataFrame(result)def GRA(Data):df = Data.copy()columns = [str(s) for s in df.columns if s not in [None]]  # [1 2 ,,,12]# print(columns)df_local = pd.DataFrame(columns=columns)df.columns = columnsfor i in range(len(df.columns)):  # 每一列都做参照序列,求关联系数df_local.iloc[:, i] = graOne(df, m=i)[0]df_local.index = columnsreturn df_local# 热力图展示
def ShowGRAHeatMap(DataFrame):colormap = plt.cm.hsvylabels = DataFrame.columns.values.tolist()f, ax = plt.subplots(figsize=(15, 15))ax.set_title('Wine GRA')# 设置展示一半,如果不需要注释掉mask即可mask = np.zeros_like(DataFrame)mask[np.triu_indices_from(mask)] = True  # np.triu_indices 上三角矩阵with sns.axes_style("white"):sns.heatmap(DataFrame,cmap="YlGnBu",annot=True,mask=mask,)plt.show()data_wine_gra = GRA(df)
ShowGRAHeatMap(data_wine_gra)

3.效果展示

 

 

二、皮尔斯系数相关(热力图)

1.数学知识

利用热力图可以看数据表里多个特征两两的相似度。
相似度由皮尔逊相关系数度量。
两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商:

2.代码展示(有不懂的可以私聊)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# ====热力图
from matplotlib.ticker import FormatStrFormatter
encoding="utf-8"
data = pd.read_csv("tu.csv", encoding="utf-8")     #读取数据
data.drop_duplicates()
data.columns = [i for i in range(data.shape[1])]# 计算两两属性之间的皮尔森相关系数
corrmat = data.corr()
f, ax = plt.subplots(figsize=(12, 9))# 返回按“列”降序排列的前n行
k = 30
cols = corrmat.nlargest(k, data.columns[0]).index# 返回皮尔逊积矩相关系数
cm = np.corrcoef(data[cols].values.T)
sns.set(font_scale=1.25)
hm = sns.heatmap(cm,cbar=True,annot=True,square=True,fmt=".3f",vmin=0,             #刻度阈值vmax=1,linewidths=.5,cmap="RdPu",        #刻度颜色annot_kws={"size": 10},xticklabels=True,yticklabels=True)             #seaborn.heatmap相关属性
# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# plt.ylabel(fontsize=15,)
# plt.xlabel(fontsize=15)
plt.title("主要变量之间的相关性强弱", fontsize=20)
plt.show()

3.seaborn.heatmap属性介绍

1)Seaborn是基于matplotlib的Python可视化库

seaborn.heatmap()热力图,用于展示一组变量的相关系数矩阵,列联表的数据分布,通过热力图我们可以直观地看到所给数值大小的差异状况。

seaborn.heatmap(data, vmin=None, 
vmax=None, cmap=None, center=None, 
robust=False, annot=None, fmt='.2g', 
annot_kws=None, linewidths=0, linecolor='white',cbar=True, cbar_kws=None, cbar_ax=None, 
square=False, xticklabels='auto', yticklabels='auto',mask=None, ax=None, **kwargs)

2)参数输出(均为默认值)

sns.heatmap(data,vmin=None,vmax=None,cmap=None,center=None,robust=False,annot=None,fmt=’.2g’,annot_kws=None,linewidths=0,linecolor=‘white’,cbar=True,cbar_kws=None,cbar_ax=None,square=False,xticklabels=‘auto’,yticklabels=‘auto’,mask=None,ax=None,
)

3)具体介绍

(1)热力图输入数据参数

data:矩阵数据集,可以是numpy的数组(array),也可以是pandas的DataFrame。如果是DataFrame,则df的index/column信息会分别对应到heatmap的columns和rows,即df.index是热力图的行标,df.columns是热力图的列标

(2)热力图矩阵块颜色参数

vmax,vmin:分别是热力图的颜色取值最大和最小范围,默认是根据data数据表里的取值确定
cmap:从数字到色彩空间的映射,取值是matplotlib包里的colormap名称或颜色对象,或者表示颜色的列表;改参数默认值:根据center参数设定
center:数据表取值有差异时,设置热力图的色彩中心对齐值;通过设置center值,可以调整生成的图像颜色的整体深浅;设置center数据时,如果有数据溢出,则手动设置的vmax、vmin会自动改变
robust:默认取值False;如果是False,且没设定vmin和vmax的值,热力图的颜色映射范围根据具有鲁棒性的分位数设定,而不是用极值设定

(3)热力图矩阵块注释参数

annot(annotate的缩写):默认取值False;如果是True,在热力图每个方格写入数据;如果是矩阵,在热力图每个方格写入该矩阵对应位置数据
fmt:字符串格式代码,矩阵上标识数字的数据格式,比如保留小数点后几位数字
annot_kws:默认取值False;如果是True,设置热力图矩阵上数字的大小颜色字体,matplotlib包text类下的字体设置;

(4)热力图矩阵块之间间隔及间隔线参数

linewidths:定义热力图里“表示两两特征关系的矩阵小块”之间的间隔大小
linecolor:切分热力图上每个矩阵小块的线的颜色,默认值是’white’

(5)热力图颜色刻度条参数

cbar:是否在热力图侧边绘制颜色刻度条,默认值是True
cbar_kws:热力图侧边绘制颜色刻度条时,相关字体设置,默认值是None
cbar_ax:热力图侧边绘制颜色刻度条时,刻度条位置设置,默认值是None

(6)square:设置热力图矩阵小块形状,默认值是False

xticklabels, yticklabels:xticklabels控制每列标签名的输出;yticklabels控制每行标签名的输出。默认值是auto。如果是True,则以DataFrame的列名作为标签名。如果是False,则不添加行标签名。如果是列表,则标签名改为列表中给的内容。如果是整数K,则在图上每隔K个标签进行一次标注。 如果是auto,则自动选择标签的标注间距,将标签名不重叠的部分(或全部)输出
mask:控制某个矩阵块是否显示出来。默认值是None。如果是布尔型的DataFrame,则将DataFrame里True的位置用白色覆盖掉
ax:设置作图的坐标轴,一般画多个子图时需要修改不同的子图的该值
**kwargs:所有其他关键字参数都传递给 ax.pcolormesh。

 

4效果展示

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一、python可视化——热力图

热力图 1、利用热力图可以看数据表里多个特征两两的相似度。参考官方API参数及地址: seaborn.heatmap(data, vminNone, vmaxNone,cmapNone, centerNone, robustFalse, annotNone, fmt’.2g’, annot_kwsNone,linewidths0, linecolor’white’, cbarTrue, cbar_kws…

(GIS可视化)热力图

我们经常在百度地图上看到类似这种的热力图,那么这种热力图究竟是什么原理?我们如何应用它来分析实际问题呢? 1.热力图原理 热力图这个名字可能听起来很高大上,但是实际上它等同于我们常说的密度图。 看到上面的图片你可能 会想…

echarts 热力图heatmap

1、配置data热力图主要通过颜色去表现数值的大小,必须要配合visualMap组件使用。可以应用在直角坐标系以及地理坐标系上直角坐标系上必须要使用两个类目轴。当坐标轴为直接坐标轴时,根据x、y轴每项数据相交形成的网格来进行定位,如x:[aa,bb],y:[cc,dd],(0,0)表示第一排第一个da…

热力图可视化 plt cmap

热力图可视化 import matplotlib.pyplot as plt plt.imsave(savename, data, vmin0, vmaxdata_max, cmapturbo)cmap 的其它选择(如 magma,jet): 其中cmap"jet"结果类似如下:

热力图 sns.heatmap 调整 图内,坐标轴,color bar 字体大小

原始 首先准备一个文件,我用的是csv文件 我们先看一下最原始的效果: 代码为: student pd.read_csv(./input/small_data.csv) plt.figure(figsize(25, 10)) sns.heatmap(student.corr(), annotTrue, cmapYlGnBu) plt.savefig(relevance.pn…

Origin制图之热力图(hot-map)

软件版本:origin 2022,下载链接在博主的其他文章中查看。 1.首先是数据,第一列为x的标签,可以是数值也可以是本文,本测试用test代替。其余为热力图数据数值。除此以外还需要Y标签或者数值。 2.按如图所示,拷…

热力图heatmap

这个方法又称Class Activation Map(CAM类激活映射),由于这是基于分类问题的一种可视化技术,并且只有将全连接层改为全局平均池化才能较好的保存图像的空间信息,这对于训练是不利的。2017年提出了Grad-CAM,可以在不改变网络结构的情…

heatmap热力图

heatmap 热力图 热力图在实际中常用于展示一组变量的相关系数矩阵,在展示列联表的数据分布上也有较大的用途,通过热力图我们可以非常直观地感受到数值大小的差异状况。heatmap的API如下所示: 下面将演示这些主要参数的用法,第一件…

即时聊天系统(IM)发送文件语音视频的两种方式比较

一般情况发送消息,把消息通过流发送给接收方{"MessageBody": "消息内容"},但是作为聊天系统这样发送消息存在两个问题:1,接收方不知道如何解析消息,消息是文本还是图片,语音&#xff0…

用腾讯即时通讯IM和实时音视频实现陪玩系统源码的语音通话功能

在陪玩系统源码中,用户之间主要的交流方式就是语音通话,实时互动性的语音通话能让人产生面对面交谈的感觉,所以在陪玩系统源码中,语音通话功能的开发非常重要,今天我们就一起来看看如何用腾讯即时通讯IM和实时音视频实…

Windows实时视频通话功能实现流程(实时视频系列四)

实时视频通话系列第四篇。上一篇我们介绍了在Windows环境下如何集成即构音视频SDK,回顾《Windows实时视频通话SDK集成指引》,这一篇将介绍视频直播功能实现流程。 还是以 2 人间的实时视频为例,主要流程如下: 请注意&#xff…

第三篇,私有化部署微信的语音电话,视频聊天IM聊天APP开发源码

前面发布两篇文章,有需要的朋友可以回头看一下,希望可以帮到大家的学习和使用。程序采用了uniapp开发,后端采用PHP,数据库采用MySQL的,程序代码开源,可任意二次开发部署等。 计划实现的功能列表 1、发布消…

Windows语音通话SDK集成及功能实现(实时语音通话四)

实时语音通话系列文章四。本篇讲述Windows环境下集成即构科技语音通话SDK,实现语音通话功能流程。 一、SDK集成指引 1、准备环境 请确保开发环境满足以下技术要求: Visual Studio 2013以上版本 Windows7、Windows8、Windows10或以上版本 麦克风、摄像…

微信原生组件|基于小程序实现音视频通话

1 微信小程序原生推拉流组件功能简介 本文将介绍如何使用微信小程序原生推拉流组件 <live-pusher> 和 <live-player> 进行推拉流&#xff0c;快速实现一个简单的实时音视频通话。 由于微信小程序原生推拉流组件使用起来比较复杂&#xff0c;推荐开发者使用即构封…

Python利用微软Azure免费的语音合成TTS源码分享

我敢保证,用过微软的语音合成后,你就会发现这是世界上最好的语音合成软件。99.99%接近人声自然流程。语调也非常自然,结合其独特的sml标记语言,合成过程中可控制主播声色和音调,以及停顿等各种的内容。 再多的介绍,自己可以百度去了解,本文讲解如何使用免费的方法合成语…

【新知实验室--音视频通话】腾讯云TRTC-实时音视频---多人会议视频通话SDK基础搭建

&#x1f996;我是Sam9029&#xff0c;一个前端 Sam9029的CSDN博客主页:Sam9029的博客_CSDN博客-JS学习,CSS学习,Vue-2领域博主 &#x1f431;‍&#x1f409;&#x1f431;‍&#x1f409;恭喜你&#xff0c;若此文你认为写的不错&#xff0c;不要吝啬你的赞扬&#xff0c;求收…

微软MFC下做speech sdk语音识别,消息响应的版本

网上虽然有很多语音识别的教程&#xff0c;但是很多是却少一些部分&#xff0c;笔者在综合了几篇之后&#xff0c;做成功了语音识别&#xff0c;下面是教程。 网上的语音识别分成几种&#xff0c;把语音识别消息放入队列中的是一种&#xff0c;笔者认为这个效率比较高&#xf…

腾讯云TRTC服务实现小程序语音/视屏会议

腾讯云TRTC服务的入门 TRTC 是腾讯云主打全平台互通的多人音视频通话和低延时互动直播解决方案。TRTC服务有多种客户端的支持&#xff0c;对于IOS、Android、React native等都支持的比较好&#xff0c;我们主要在于 IOS、Android、Web三端进行处理&#xff0c;其中 TRTC Web S…

【VS开发】【智能语音处理】Windows下麦克风语音采集

简介 这是我很早以前的大学毕业设计,忽然间找到贴出来以纪念自己的纯真年代...但是因为CSDN不给面子所以导致短短的一篇文章贴了足足7次..他老提时说文章超过了64K,老大,拜托,那是算上了里面的图片大小吧...:-( 本文简单介绍了声卡的工作原理 , 录音的原理以及数字音频的基本知…

【实时语音转文本】PC端实时语音转文本(麦克风外音系统内部音源)

语音转文字这个功能可以应用在视频动态字幕&#xff0c;语音快速输入&#xff0c;实时记录通话内容&#xff0c;高级应用可以在人工智能&#xff0c;语音识别&#xff0c;智能助手方面&#xff0c;还需要一点机器学习可以做出一些好玩的东西&#xff0c;比如PC端AI助理&#xf…