返回顶部
首页 > 资讯 > 后端开发 > Python >python热力图怎么实现
  • 112
分享到

python热力图怎么实现

2023-07-02 12:07:35 112人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

本文小编为大家详细介绍“python热力图怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python热力图怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、数据无量纲化处理 (热力图)

本文小编为大家详细介绍“python热力图怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python热力图怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

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

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

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

python热力图怎么实现

上式中,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 pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as snsfrom sklearn.datasets import load_wine wine = load_wine()data = wine.data  # 数据lables = wine.target  # 标签feaures = wine.feature_namesdf = pd.DataFrame(data, columns=feaures)  # 原始数据 # 第一步:无量纲化def standareData(df):    """    df : 原始数据    return : data 标准化的数据    """    data = pd.DataFrame(index=df.index)  # 列名,一个新的dataframe    columns = 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)  # 参照列为1    return 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 = columns    for i in range(len(df.columns)):  # 每一列都做参照序列,求关联系数        df_local.iloc[:, i] = graOne(df, m=i)[0]    df_local.index = columns    return df_local # 热力图展示def ShowGRAHeatMap(DataFrame):    colORMap = plt.cm.hsv    ylabels = 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.效果展示

python热力图怎么实现

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

1.数学知识

利用热力图可以看数据表里多个特征两两的相似度。

相似度由皮尔逊相关系数度量。

两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商:

python热力图怎么实现

2.代码展示

import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns # ====热力图from matplotlib.ticker import FormatStrFormatterencoding="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 = 30cols = 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热力图怎么实现

读到这里,这篇“python热力图怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网Python频道。

--结束END--

本文标题: python热力图怎么实现

本文链接: https://www.lsjlt.com/news/341906.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python热力图怎么实现
    本文小编为大家详细介绍“python热力图怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“python热力图怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、数据无量纲化处理 (热力图)...
    99+
    2023-07-02
  • 怎么用Python画热力图
    这篇文章主要介绍“怎么用Python画热力图”,在日常操作中,相信很多人在怎么用Python画热力图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python画热力图”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-16
  • python热力图实现的完整实例
    目录一、数据无量纲化处理 (热力图)1.数据无量纲化处理(仅介绍本文用到的方法):min-max归一化2.代码展示3.效果展示二、皮尔斯系数相关(热力图)1.数学知识2.代...
    99+
    2024-04-02
  • python 热力图heatmap
    python的热力图是用皮尔逊相关系数来查看两者之间的关联性 #encoding:utf-8 import numpy as np import pandas as pd from matplotlib import pyplot as...
    99+
    2023-01-31
    python heatmap
  • 利用Python实现热力图的绘制
    目录1. 引言2. 读取图像3. 图像灰度化4. 像素化效果5. 为热力图选择调色板1. 引言 热力图,是一种通过对色块着色来显示数据的统计图表。绘图时,需指定颜色映射的规则。例如,...
    99+
    2024-04-02
  • python中实现热力图的原理是什么
    python中实现热力图的原理是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学...
    99+
    2023-06-14
  • 怎么利用Python创作热力图
    这篇文章主要介绍“怎么利用Python创作热力图”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么利用Python创作热力图”文章能帮助大家解决问题。1. 引言热力...
    99+
    2024-04-02
  • 可视化 | 教你用Python实现热力图(一)
    本文正在参与新星计划Python学习方向,详情请看:(93条消息) lifein的博客_CSDN博客-SQL SERVER,计算机三级——数据库领域博主 目录 一、导引 二、内容 (一)地图热力图:(动态地图) 1、环境搭建: 2、地图代码...
    99+
    2023-09-04
    python 数据分析 娱乐
  • 【PYTHON】绘制热力图SEABORN.HEATMAP
    目录 一、参数详解二、颜色参数-cmap三、个性化设置四、代码 更多python资料、源码、教程皆可点击文章下方名片获取此处跳转 一、参数详解 seaborn.heatma...
    99+
    2023-10-02
    python 机器学习 开发语言
  • 相关性分析热力图(Python&Matlab代码实现)
    目录 1 热力图 1.1 简介 1.2 语法  2 算例1(Python代码实现) 2.1 算例 2.2 Python代码 2.3 运行结果  3 算例2(Python代码实现) 4 算例3(Python代码实现) 4.1 算例 4.2 P...
    99+
    2023-09-02
    python 开发语言 相关性分析 matlab
  • 【python】python绘制相关性热力图
    1.介绍   热力图(heatmap),又称相关系数图,根据热力图中不同方块颜色对应的相关系数的大小,可以判断出变量之间相关性的大小。热力图通过对色块着色来显示数据的统计图表。绘图时,需指定颜色映射的...
    99+
    2023-10-08
    python 开发语言
  • 基于Cesium实现加载显示热力图
    目录CesiumHeatmap编写案例我是一个小白,到目前为止对于3D方面的东西不是特别的懂,所以说,对于cesium使用的并不是特别的好,可以说根本不会吧,所以说也是在一点一点摸索...
    99+
    2024-04-02
  • C# .Net如何实现灰度图和HeatMap热力图winform
    本篇内容介绍了“C# .Net如何实现灰度图和HeatMap热力图winform”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、...
    99+
    2023-06-22
  • C#.Net实现灰度图和HeatMap热力图winform(进阶)
    目录一、前文二、渐进颜色调色板三、热力点大小和扩展大小一、前文 前文可以参考我的前一篇博文:C# .Net实现简易灰度图和酷炫HeatMap热力图winform 但是,先前的热力图效...
    99+
    2024-04-02
  • 详解Python+Matplotlib绘制面积图&热力图
    目录1.绘制面积图2.绘制热力图1.绘制面积图 面积图常用于描述某指标随时间的变化程度。其面积也通常可以有一定的含义。 绘制面积图使用的是plt.stackplot()方法。 以小学...
    99+
    2024-04-02
  • python绘制相关系数热力图
    python绘制相关系数热力图 一.数据说明和需要安装的库二.准备绘图三.设置配色,画出多幅图全部代码: 本文讲述如何利用python绘制如上的相关系数热力图 一.数据说明和需要安装...
    99+
    2023-09-05
    python pandas 开发语言
  • python数据可视化Seaborn画热力图
    目录1.引言2. 栗子3. 数据预处理4. 画热力图5. 添加数值6. 调色板优化1.引言 热力图的想法很简单,用颜色替换数字。 现在,这种可视化风格已经从最初的颜色编码表格走了很...
    99+
    2024-04-02
  • 基于Cesium如何实现加载显示热力图
    这篇“基于Cesium如何实现加载显示热力图”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“基于Cesium如何实现加载显示热...
    99+
    2023-07-02
  • Python pyecharts实时画图自定义可视化经纬度热力图
    目录背景基于pyecharts内置经纬度的热力图基于自定义经纬度的热力图pyecharts库缺点不同地图坐标系区别WGS-84 - 世界大地测量系统GCJ-02 - 国测局坐标BD-...
    99+
    2024-04-02
  • C#如何实现简易灰度图和酷炫HeatMap热力图winform
    C#如何实现简易灰度图和酷炫HeatMap热力图winform,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、效果展示二、随机生成热力点热力点类class Heat...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作