精华内容
下载资源
问答
  • 变量相关性热力图

    千次阅读 2019-04-13 10:41:36
    我们在建模的时候为了避免多重共线性一般都会分析变量之间...为了能够更好的展现变量之间的相关性,下面为大家介绍如何利用热力图来表示变量之间的相关性。 def corr_map(df): var_corr = df.corr() mask = np....

    我们在建模的时候为了避免多重共线性一般都会分析变量之间的相关性。衡量变量相关性我们一般都是计算变量两两之间的皮尔逊相关系数( Pearson correlation coefficient)。为了能够更好的展现变量之间的相关性,下面为大家介绍如何利用热力图来表示变量之间的相关性。

    def corr_map(df):
        var_corr = df.corr()
        mask = np.zeros_like(var_corr, dtype=np.bool)
        mask[np.triu_indices_from(mask)] = True
        cmap = sns.diverging_palette(220, 10, as_cmap=True)
        f, ax = plt.subplots(figsize=(20, 12))
        sns.set(font_scale=1)
        sns.heatmap(var_corr, mask=mask, cmap=cmap, vmax=1, center=0
                   ,square=True, linewidths=.5, cbar_kws={"shrink": .5}
                   ,annot=True,annot_kws={'size':12,'weight':'bold', 'color':'red'})
        plt.show()   

    效果如下:

    展开全文
  • 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.RdBu
        data=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接口还有很多有意思的组合和参数可以去设置和使用,这里给出来了几种比较常用的方式,感兴趣的话可以拿去试试。

    展开全文
  • 今天我简单地使用了scipy模块进行了统计学中三大相关性分析方法(皮尔森相关性系数、斯皮尔曼相关性系数、肯德尔相关性系数)的使用,这里的主要工作是将相关性计算结果进行可视化展示,以便于更直观地来对不同因子之....

    本文首发地址:

    https://yishuihancheng.blog.csdn.net/article/details/83547648

    欢迎关注我的博客【Together_CZ】,我是沂水寒城!

    4cdc7f71c6664622a0a6419502719b54

    今天我简单地使用了scipy模块进行了统计学中三大相关性分析方法(皮尔森相关性系数、斯皮尔曼相关性系数、肯德尔相关性系数)的使用,这里的主要工作是将相关性计算结果进行可视化展示,以便于更直观地来对不同因子之间的相关性进行分析,下面是具体的实践:

    #!usr/bin/env python#encoding:utf-8   '''__Author__:沂水寒城功能: python实践统计学中的三大相关性系数,并绘制相关性分析的热力图''' import numpy as npimport pandas as pdimport seaborn as snsimport matplotlib.pyplot as plt from scipy.stats import pearsonr,spearmanr   def randomPlot(): ''' 构造随机数矩阵来绘制热力图 ''' data=np.random.rand(8,8) print(data) fig,ax=plt.subplots(figsize=(10,10)) key_list=['A','B','C','D','E','F','G','H'] 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") ax.set_title(' Heat Map ', fontsize=18) ax.set_ylabel('Y', fontsize=18) ax.set_xlabel('X', fontsize=18) plt.savefig('Random.png')  def dataPlot(): ''' 基于相关性系数计算结果来绘制 ''' data1=[[1.0, 0.679138216972867, 0.8723347117585479, 0.8678591195124671, 0.9091565423610072, -0.681888271075189, -0.7228630059512009, -0.681888271075189], [0.679138216972867, 1.0, 0.7808137626700863, 0.45749648218056993, 0.5348626411851899, -0.44326149230111495, -0.39558814315535173, -0.44326149230111495], [0.8723347117585479, 0.7808137626700863, 1.0, 0.7020628568851344, 0.7658545326255977, -0.7217424383082518, -0.5875065812285509, -0.7217424383082518], [0.8678591195124671, 0.45749648218056993, 0.7020628568851344, 1.0, 0.9903366506522474, -0.5874500887255807, -0.8382341966002466, -0.5874500887255807], [0.9091565423610072, 0.5348626411851899, 0.7658545326255977, 0.9903366506522474, 1.0, -0.6439505593700681, -0.8244259230387567, -0.6439505593700681], [-0.681888271075189, -0.44326149230111495, -0.7217424383082518, -0.5874500887255807, -0.6439505593700681, 1.0, 0.4821038714558963, 1.0], [-0.7228630059512009, -0.39558814315535173, -0.5875065812285509, -0.8382341966002466, -0.8244259230387567, 0.4821038714558963, 1.0, 0.4821038714558963], [-0.681888271075189, -0.44326149230111495, -0.7217424383082518, -0.5874500887255807, -0.6439505593700681, 1.0, 0.4821038714558963, 1.0]] data2=[[0.9999999999999999, 0.8345554576233073, 0.9243854856819417, 0.9330027648545496, 0.9482209505391218, -0.6482501837911674, -0.8818546914603946, -0.6482501837911674], [0.8345554576233073, 0.9999999999999999, 0.9003585423988755, 0.7649830893396171, 0.7979521001324441, -0.4691190784521079, -0.6480284658216039, -0.4691190784521079], [0.9243854856819417, 0.9003585423988756, 1.0, 0.8506386730833658, 0.8830994621736679, -0.7006298478257242, -0.7676395373967932, -0.7006298478257242], [0.9330027648545496, 0.7649830893396171, 0.8506386730833659, 0.9999999999999999, 0.9951726440650351, -0.5278605167290854, -0.9273089460158745, -0.5278605167290854], [0.9482209505391219, 0.7979521001324442, 0.8830994621736679, 0.9951726440650353, 1.0, -0.5724194583833783, -0.9112198965249181, -0.5724194583833783], [-0.6482501837911674, -0.46911907845210793, -0.7006298478257242, -0.5278605167290855, -0.5724194583833783, 1.0, 0.49515922475047763, 1.0], [-0.8818546914603947, -0.6480284658216039, -0.7676395373967932, -0.9273089460158744, -0.9112198965249181, 0.49515922475047763, 1.0, 0.49515922475047763], [-0.6482501837911674, -0.46911907845210793, -0.7006298478257242, -0.5278605167290855, -0.5724194583833783, 1.0, 0.49515922475047763, 1.0]] data3=[[1.0, 0.6447733742285494, 0.7648449086941359, 0.7781871747188993, 0.8077705036447606, -0.45314582645069557, -0.7063398069618333, -0.45314582645069557], [0.6447733742285494, 1.0, 0.723107089412363, 0.5724058545087037, 0.6071562414937144, -0.3151362329600627, -0.47203186715609546, -0.3151362329600627], [0.7648449086941359, 0.7231070894123629, 1.0, 0.6636168802979515, 0.7036503531839524, -0.5094145396347782, -0.5801992046091554, -0.5094145396347782], [0.7781871747188993, 0.5724058545087037, 0.6636168802979514, 1.0, 0.9417388451103401, -0.35110754201106087, -0.818036667286979, -0.35110754201106087], [0.8077705036447606, 0.6071562414937144, 0.7036503531839524, 0.9417388451103401, 1.0, -0.3871446641295609, -0.7851151107221745, -0.3871446641295609], [-0.45314582645069557, -0.3151362329600627, -0.5094145396347782, -0.35110754201106087, -0.3871446641295609, 1.0, 0.331222719795913, 1.0], [-0.7063398069618333, -0.4720318671560954, -0.5801992046091554, -0.818036667286979, -0.7851151107221744, 0.331222719795913, 1.0, 0.331222719795913], [-0.45314582645069557, -0.3151362329600627, -0.5094145396347782, -0.35110754201106087, -0.3871446641295609, 1.0, 0.331222719795913, 1.0]] data1,data2,data3=np.array(data1),np.array(data2),np.array(data3) fig,ax=plt.subplots(figsize=(10,10)) key_list=['A','B','C','D','E','F','G','H'] sns.heatmap(pd.DataFrame(np.round(data1,4),columns=key_list,index=key_list),annot=True,vmax=1,vmin=0,xticklabels=True, yticklabels=True,square=True,cmap="YlGnBu") ax.set_title(' Heat Map ', fontsize=18) ax.set_ylabel('Y', fontsize=18) ax.set_xlabel('X', fontsize=18) plt.savefig('data1.png')  if __name__=='__main__': randomPlot() dataPlot()

    其中,随机生成数矩阵得到的热力图如下:

    392550546c2d4ec3ae5686b9feaec59d

    基于相关性计算结果得到的三个热力图分别如下:

    data1.png

    d50b962671444b2bbd9f3a1f799cc921

    data2.png

    201cd9e18cbd4015a0460f3d7facbd10

    data3.png

    e531b023998644829b9603722b0e279f

    从上面三个热力图可以看到:虽然三者的计算结果有些偏差,但是整体的趋势都是相同的。

    展开全文
  •  基于相关性系数计算结果来绘制热力图  '''  colormap=plt.cm.RdBu  data=np.array(data)  fig,ax=plt.subplots(figsize=(12,12))  #不指定颜色带的色系  # sns.heatmap(pd.DataFrame(np.round(data,4),...


    作者:沂水寒城,CSDN博客专家,个人研究方向:机器学习、深度学习、NLP、CV

    Blog: http://yishuihancheng.blog.csdn.net

    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.RdBu
        data=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接口还有很多有意思的组合和参数可以去设置和使用,这里给出来了几种比较常用的方式,感兴趣的话可以拿去试试。

    赞 赏 作 者

    Python中文社区作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、CSDN等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。

    ▼点击成为社区注册会员      喜欢文章,点个

    展开全文
  • 热地图使用场景:进一步查看数据表中特征两两之间的相关性在数据挖掘的前期工作中,对于研究特征关系十分有效一、函数体及主要参数函数体:seaborn主要参数:(1)data:数据集,可以是array型的数组或者是Dat...
  • 通过上面的热力图,我们可以看出 特征radius_mean,perimeter_mean 和 area_mean 是相关的(图中相关性为1.0的两个变量),所以我们可以只选择area_mean这个变量,之所以选择area_mean特征,是因为在swarm plot中area...
  • 今日锦囊特征锦囊:怎么来管理我们的建模项目文件?这个专题其实很久之前在我的一篇文章里有比较...点击图片看高清大这个项目文件结构是我平时经常用的,会根据项目复杂度自行删减一些内容,不过总体的框架还是差...
  • 这点我们通过相关性热力图也可以看到。 # 通过相关性分析heatmap分析五个基础属性 plt.subplots(figsize=(10,8)) ax = plt.axes() ax.set_title("Correlation Heatmap") corr = data[interested].corr() sns.heatmap...
  • 今日锦囊特征锦囊:金融风控里的WOE前的分箱一定要单调吗?今天我们来讲讲一个金融风控里的“常识点”,就是那种我们习以为常但若要讲出个所以然来比较困难的点,正如标题所言:WOE前的分箱一定要单调吗?...
  • Python之相关性分析热力图

    千次阅读 2020-03-15 01:08:15
    import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt from scipy.stats import pearsonr, spearmanr ... 构造随机数矩阵来绘制热力图 ''' data ...
  • hive+R 实现大数据下属性间相关性热力图展示这是自己完成的第一个小程序,特将有价值的地方在此记录下来,包括以下几部分内容: Hive数据导入–Sqoop方式 Map键值对实现Excel数据透视表的功能 Java连接R 将数据...
  • 皮尔逊相关性系数和热力图

    千次阅读 2019-11-30 20:14:24
    热力图(haetmap)注:Reference: 前言 特征选择是一个重要的“数据预处理”过程,在实现机器学习任务中,获得数据后通常先进行特征选择,此后再训练学习器。[1] 特征选择的两大主要原因: 维数灾难问题[2]。因为...
  • python相关性分析与热力图可视化

    千次阅读 2020-06-26 21:12:27
    相关性分析可以发现不同变量之间相关性程度,本文以...2.热力图可视化展示 from matplotlib import pyplot as plt import seaborn as sns import numpy as np fig = plt.figure() names=['学科A','学科B','学科C','.
  • 在上一篇博客中,我简单地使用了scipy模块进行了统计学中三大相关性分析方法(皮尔森相关性系数、斯皮尔曼相关性系数、肯德尔相关性系数)的使用,这里的主要工作是将相关性计算结果进行可视化展示,以便于更直观地...
  • 今天我简单地使用了scipy模块进行了统计学中三大相关性分析方法(皮尔森相关性系数、斯皮尔曼相关性系数、肯德尔相关性系数)的使用,这里的主要工作是将相关性计算结果进行可视化展示,以便于更直观地来对不同因子之....
  • 代码是python编写的热力图矩阵,可以实现多变量之间的相关性分析,以此用于下一步操作。所用的库有import seaborn as sns import matplotlib.pyplot as plt import numpy as np import pandas as pd
  • 今日锦囊特征锦囊:如何根据变量相关性画出热力图?上次的锦囊有提及到如何使用sklearn来实现多项式的扩展来衍生更多的变量,但是我们也知道其实这样子出来的变量之间的相关性是很强的,我们怎...
  • 今日锦囊特征锦囊:如何根据变量相关性画出热力图?上次的锦囊有提及到如何使用sklearn来实现多项式的扩展来衍生更多的变量,但是我们也知道其实这样子出来的变量之间的相关性是很强的,我们怎么可以可视化一下呢?...
  • x19 -0.131497 1.000000 绘制其热力图 这里使用了seaborn库,如果没有直接在在终端pip install seaborn下载 注:本人使用的是 vscode import seaborn as sns #引入seaborn库 plt.figure(1) sns.heatmap(new_df,annot...

空空如也

空空如也

1 2 3 4 5
收藏数 100
精华内容 40
关键字:

相关性热力图