目录

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

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效果展示

python热力图实现相关推荐

  1. python用excel数据做热力图_7行代码 Python热力图可视化分析缺失数据处理-Python 实用宝典...

    Python热力图寻找缺失数据 你有没有遇到一种情况,处理一张很大的csv表格的时候很难找到表格中每一列的缺失数据,或者说处理速度非常慢 ?当然如果你的Excel水平非常高,这个可能不会成为你的问题, ...

  2. python热力图代码_python热力图实现简单方法

    在我们想要对不同变量进行判断的时候,会分析其中的之间的联系.这种理念同样也被用在实例生活中,最常见到的是做一个地理的热力图.很多人对画热力图的方法不是很清楚,我们可以先装好相关的工具,了解一些使用参数 ...

  3. python热力图背景_python 绘制场景热力图的示例

    我们在做诸如人群密集度等可视化的时候,可能会考虑使用热力图,在Python中能很方便地绘制热力图. 下面以识别图片中的行人,并绘制热力图为例进行讲解. 步骤1:首先识别图像中的人,得到bounding ...

  4. python 热力图_python数据分析:数据缺失机制及利用missingno库对缺失可视化

    缺失数据是一个非常普遍的问题,也是好多人不太能弄懂的问题,包括自己也是,为了加强理解,今天给大家写一写缺失数据的缺失机制,和在python中用missingno库对缺失数据可视化的操作方法. 数据缺失 ...

  5. python热力图——“星空代码”

    描述 使用python,生成一个由随机数据构成的热力图 由于我使用的是三通道,因此热力值小的部分是黑色,热力值高的部分是白色 我:看我生成的热力图 女朋友:你生成的是星空图 代码 #encoding: ...

  6. 【数据可视化】Python 热力图(seaborn.heatmap)

    Python数据可视化-热力图 热力图 cmap center annot annot_kws fmt linewidths linecolor xticklabels yticklabels mas ...

  7. python热力图+修改字体和颜色

    用python画热力图不难,但是想要调整热力图中的各种字体和颜色就需要深究其中各种参数的功能了,这里让我们看一下如何一步步实现如下图所示的热力图: 1.导入所需的各种包,特别关注其中关于字体的部分 i ...

  8. python热力图代码_python绘制热力图heatmap

    本文实例为大家分享了python绘制热力图的具体代码,供大家参考,具体内容如下 python的热力图是用皮尔逊相关系数来查看两者之间的关联性. #encoding:utf-8 import numpy ...

  9. python热力图分析_使用Python抓取腾讯宜出行热力图数据实战

    1.jpg (42.83 KB, 下载次数: 0) 2018-5-12 19:05 上传 1.具体的抓取程序已经放在后面了,供大家下载安装,下面具体说一下使用方法. 本软件使用了渔网形式来抓取腾讯宜出 ...

  10. python热力图颜色设置_【Python】绘制热力图seaborn.heatmap,cmap设置颜色的参数

    1. 参数详解 seaborn.heatmap seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=F ...

最新文章

  1. 在CentOS 6.9 x86_64上安装redis 4.0.6
  2. 计算机中丢失 MSVCR100.dll
  3. python string模块安装_python String模块-阿里云开发者社区
  4. jquery 表格自动拆分(方便打印)插件-printTable
  5. 顺序存储的二叉树的最近的公共祖先问题
  6. 网络编程1-初探winSocket
  7. 想入职阿里的Java开发者必看,阿里巴巴面试官实战经验分享!
  8. jsp dbbean mysql_Servlet+JSP+MySQL实现用户管理模块之二、实现用户注册
  9. Xamarin iOS教程之视图显示图像
  10. 从高考到程序员——我一直在寻找答案
  11. CH341应用升级为CH347软硬件注意事项
  12. python实现两个图片的叠加融合
  13. Sentry 前端日志上报使用
  14. Linux基本命令的使用(2)
  15. 数据库常用的操作命令
  16. Android 接入VK登录
  17. 网站关键词优化方法有哪些
  18. Vue3下Chrome插件popup、content、background通信API组合和实现
  19. TensorFlow实现:卷积神经网络识别手势动作(有代码与演示)
  20. Stack OverFlow 正确的使用姿势(快速访问、优雅搜索)

热门文章

  1. linux云计算架构师:Rsync+sersync实现数据实时同步
  2. Fed要求花旗集团和美国银行增资
  3. 外星人入侵Ship类、Bullets类
  4. vue文本识别 “ \n ” 的换行问题
  5. LabWindows/CVI系列——CVI下Word文件转换为PDF文件
  6. 链式前向星(超详细)
  7. 1 馈线焊接--电工技能
  8. 高逼格的实现WiFi共享,不安装第三方wifi共享软件,两种方式实现开启wifi的功能...
  9. 【解决办法】部分联芸主控NVMe固态硬盘在部分机型上导致的Linux休眠掉盘
  10. Android算卦程序