首页 > 解决方案 > 可视化相关数据热图的紧凑方式

问题描述

我正在尝试可视化该Result列与其他所有列的相关性。

   A_B       A_C       B_C         Result
0  0.318182  0.925311  0.860465        91
1 -0.384030  0.991803  0.996344        12
2 -0.818182  0.411765  0.920000        53
3  0.444444  0.978261  0.944444        64

A_B = (A-B)/(A+B)也相应地所有其他值。

在此处输入图像描述 适用于较小的编号。列,但如果我增加没有。列然后没有。热图中的行数不断堆积。是否有任何紧凑的方式来表示它。

以下代码将重现输出 -

import pandas as pd

import seaborn as sns

data = {'A':[232,243,12,546,67,12,78,11,245],
    'B':[120,546,120,210,56,120,56,89,12],
    'C':[9,1,5,6,7,43,7,12,64],
    'Result':[91,12,53,64,71,436,74,123,641],
}
df = pd.DataFrame(data,columns=['A','B','C','Result'])

#Responsible for (A-B)/(A+B) ,(A-C)/(A+C) and similarly
colnames = df.columns.tolist()[:-1]
for i,c in enumerate(colnames):
    if i!=len(colnames):
        for k in range(i+1,len(colnames)):
            df[c+'_'+colnames[k]]=(df[c]-df[colnames[k]])/(df[c]+df[colnames[k]])

newdf = df[['A_B','A_C','B_C','Result']].copy()
#Plotting A_B,A_C,B_C by ignoring the output of result of itself
plot = pd.DataFrame(newdf.corr().iloc[:-1,-1])
sns.heatmap(plot,annot=True)

我听说但无法找到任何来源的一种技术是表示迷你矩形中的每个相关因子,例如 在此处输入图像描述 根据它,将给定的地图视为从左下角开始的 3*3 和 (0,0) 的矩阵, A_B 将在 (1,1) 中表示 A_C 在 (2,1) 中,B_C 在 (2,2) 中。但是,我不明白怎么办?

标签: pythonmatplotlibdata-visualizationseaborn

解决方案


您还可以绘制每列与该Result列和其他列的相关性。下面是一种方法。提供 x 和 y 刻度标签可指导您更好地比较相关性。您还可以注释要在热图上显示的相关值。

cor = newdf.corr()

sns.heatmap(cor, xticklabels=cor.columns.values,
            yticklabels=cor.columns.values, annot=True)

在此处输入图像描述


推荐阅读