热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于seaborn的相关性热力图可视化分析

seaborn本质上是对matplotlib模块的高级封装,所以要想使用seaborn的功能,首先需要安装好matplotlib的基础环境,

       seaborn本质上是对matplotlib模块的高级封装,所以要想使用seaborn的功能,首先需要安装好matplotlib的基础环境,现在的安装方式已经极大地简化了,只需要pip安装即可,这里就不再多说明了。

       今天主要是想对手里的一个数据集进行简单的分析,分析不同属性特征之间的相关程度,相关性的计算有很多种方法,比如我最常用的就是基于统计学习里面的三大指数来进行计算,主要包括:皮尔森系数、肯德尔系数和斯皮尔曼系数。相关性的计算结果可以通过seaborn来进行直观的展示,接下来我们来看一下具体的代码实现,首先是数据加载部分:

def Demo(data_list,savepath='relation.png'):'''数据加载。解析、可视化'''matrix=[]A=[one[2] for one in data_list]B=[one[3] for one in data_list]C=[one[4] for one in data_list]D=[one[5] for one in data_list]E=[one[6] for one in data_list]F=[one[7] for one in data_list]G=[one[8] for one in data_list]matrix=[A,B,C,D,E,F,G]label=['O3','Water','Temp','Humi','See','WS','WD']relationAnalysis(matrix,label,flag='P',savepath=savepath)

         接下来是具体的绘图代码实现,如下所示:

def relationAnalysis(matrix,label,flag='P',savepath='relation/heatmap_pearson.png'):'''matrix:不同属性的数据矩阵label:不同因子名称'''all_res=[]for i in range(len(matrix)):one_tmp=[]vector1=matrix[i]for j in range(len(matrix)):vector2=matrix[j]a=pearsonr(vector1,vector2)[0]b=spearmanr(vector1,vector2)[0]c=kendalltau(vector1,vector2)[0]if flag=='P':one_tmp.append(a)elif flag=='S':one_tmp.append(b)elif flag=='K':one_tmp.append(c)else:one_tmp.append((a+b+c)/3)all_res.append(one_tmp)heapMapPlot(all_res,label,savepath=savepath)

       接下来是热力图绘制函数:

def heapMapPlot(data,key_list,savepath='relation/heatmap.png'):'''基于相关性系数计算结果来绘制热力图'''colormap=plt.cm.RdBudata=np.array(data)fig,ax=plt.subplots(figsize=(12,12))#不指定颜色带的色系# sns.heatmap(pd.DataFrame(np.round(data,4),columns=key_list,index=key_list),annot=True,vmax=1,vmin=0,# xticklabels=True,yticklabels=True,square=True)#指定颜色带的色系# sns.heatmap(pd.DataFrame(np.round(data,4),columns=key_list,index=key_list),annot=True,vmax=1,vmin=0,# xticklabels=True,yticklabels=True,square=True,cmap="YlGnBu")#指定颜色带的色系# sns.heatmap(pd.DataFrame(np.round(data,4),columns=key_list,index=key_list),annot=True,vmax=1,vmin=0,# xticklabels=True,yticklabels=True,square=True,cmap="RdBu_r")#指定网格间距# sns.heatmap(pd.DataFrame(np.round(data,4),columns=key_list,index=key_list),annot=True,vmax=1,vmin=0,# xticklabels=True,yticklabels=True,square=True,linewidths=0.3,cmap="RdBu_r")#指定网格间距+间距颜色sns.heatmap(pd.DataFrame(np.round(data,4),columns=key_list,index=key_list),annot=True,vmax=1,vmin=0,xticklabels=True,yticklabels=True,square=True,linewidths=1,linecolor="green",cmap="RdBu_r")#sns.heatmap(DataFrame.astype(float),linewidths=0.1,vmax=1.0, square=True, cmap=colormap, linecolor='white', annot=True)plt.title('factorDataAnalysis')plt.savefig(savepath)

     上面的代码中,我们给出来了几种不同形式的实现,接下来我们来看一下具体的结果:
不指定颜色带色系的结果图:

  指定颜色带色系的结果图:

指定网格间距的结果图:

指定网格间距+颜色的结果图:

       当然了,参照官方的API接口还有很多有意思的组合和参数可以去设置和使用,这里给出来了几种比较常用的方式,感兴趣的话可以拿去试试。


推荐阅读
  • 注意力汇聚:NadarayaWatson 核回归
    Nadaraya-Watson核回归是具有注意力机制的机器学习范例。Nadaraya-Watson核回归的注意力汇聚是对训练数据中输出的加权平均。从注意力的角度来看, ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • python机器学习之数据探索
    🐱今天我们来讲解数据建模之前需要处理的工作,也就是数据探索的过程,很多同学会说,不就是处理缺失值,异常值&# ... [详细]
  • python seaborn_大白话Python绘图系列Seaborn篇
    1.目的了解python第三方绘图包seaborn,从常用绘图实例开始,快速体验seaborn绘图。建议用时:10分钟绘图例子:12个每个例子代码量:1 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
  • Python中程序员的面试题有哪些
    小编给大家分享一下Python中程序员的面试题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有 ... [详细]
  • csv转为矩阵 python_Python可视化 | Seaborn5分钟入门(六)——heatmap热力图
    Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API ... [详细]
  • 32位ubuntu编译android studio,32位Ubuntu编译Android 4.0.4问题
    问题一:在32位Ubuntu12.04上编译Android4.0.4源码时,出现了关于emulator的错误,关键是其Makefile里的 ... [详细]
author-avatar
嘻嘻嘻嘻
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有