热力图展示相关矩阵

量化两个变量之间的关系通常使用皮尔逊相关系数,即衡量变量间的线性相关程度。
相关系数取值范围:[-1,1]:

  • -1 表示完全负线性相关
  • 0 表示没有线性关系
  • 1 表示完全正线性相关

越远离0,相关性越强。当变量数量超过2个时,通常使用相关矩阵表示,即用方阵形式表格表示每对变量之间的相关性。

下面通过Python示例说明如何计算相关矩阵,并使用热力图进行表示。

创建相关矩阵

首先创建示例数据集:

import pandas as pd

data = {'assists': [4, 5, 5, 6, 7, 8, 8, 10],
        'rebounds': [12, 14, 13, 7, 8, 8, 9, 13],
        'points': [22, 24, 26, 26, 29, 32, 20, 14]
        }

df = pd.DataFrame(data, columns=['assists','rebounds','points'])
df

#   assist  rebounds  points
# 0	4	12	22
# 1	5	14	24
# 2	5	13	26
# 3	6	7	26
# 4	7	8	29
# 5	8	8	32
# 6	8	9	20
# 7	10	13	14

下面计算相关矩阵:

# 创建相关矩阵
df.corr()

#                 assists   rebounds     points
# assists        1.000000  -0.244861  -0.329573
# rebounds      -0.244861   1.000000  -0.522092
# points        -0.329573  -0.522092   1.000000

# 创建相关矩阵,保留三位小数
df.corr().round(3)
# 	       assists	rebounds  points
# assists	1.000	  -0.245  -0.330
# rebounds	-0.245	   1.000  -0.522
# points	-0.330	  -0.522   1.000

表格对角线的相关系数都为1,表示每个变量都完全自相关。其他数值表示每对变量的相关系数:

assists 和 rebounds 相关系数为 -0.245.
assists 和 points 相关系数为 -0.330.
rebounds 和 points 相关系数为 -0.522.

相关矩阵可视化

下面同构pandas包中的样式选型可视化相关矩阵,使用不同的样式风格:

corr = df.corr()
  sns.heatmap(corr, xticklabels=corr.columns, yticklabels=corr.columns, cmap="Blues")
# sns.heatmap(corr, xticklabels=corr.columns, yticklabels=corr.columns, cmap="RdYlGn")
# sns.heatmap(corr, xticklabels=corr.columns, yticklabels=corr.columns, cmap="coolwarm")
# sns.heatmap(corr, xticklabels=corr.columns, yticklabels=corr.columns, cmap="bwr")
# sns.heatmap(corr, xticklabels=corr.columns, yticklabels=corr.columns, cmap="PuOr")
plt.title('相关性热力图')
plt.show()

| 在这里插入图片描述
在这里插入图片描述

完整代码


import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams['axes.unicode_minus'] = False

data = {'assists': [4, 5, 5, 6, 7, 8, 8, 10],
        'rebounds': [12, 14, 13, 7, 8, 8, 9, 13],
        'points': [22, 24, 26, 26, 29, 32, 20, 14]
        }

df = pd.DataFrame(data, columns=['assists', 'rebounds', 'points'])

corr = df.corr()
sns.heatmap(corr, xticklabels=corr.columns, yticklabels=corr.columns, cmap="Blues")
# sns.heatmap(corr, xticklabels=corr.columns, yticklabels=corr.columns, cmap="RdYlGn")
# sns.heatmap(corr, xticklabels=corr.columns, yticklabels=corr.columns, cmap="coolwarm")
# sns.heatmap(corr, xticklabels=corr.columns, yticklabels=corr.columns, cmap="bwr")
# sns.heatmap(corr, xticklabels=corr.columns, yticklabels=corr.columns, cmap="PuOr")
plt.title('相关性热力图')
plt.show()

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值