Skip to content

Latest commit

 

History

History
194 lines (115 loc) · 6.81 KB

annotated-heatmaps-correlation-matrix.md

File metadata and controls

194 lines (115 loc) · 6.81 KB

使用 5 个简单步骤创建相关矩阵的注释热图

原文:www.kdnuggets.com/2019/07/annotated-heatmaps-correlation-matrix.html

comments

作者 Julia Kho,数据科学家

figure-name

热图是一种数据的图形表示方式,其中数据值通过颜色表示。也就是说,它通过颜色来传达一个值给读者。当你处理大量数据时,这是一个很好的工具,可以帮助观众关注最重要的区域。

在本文中,我将引导你通过 5 个简单步骤创建你自己的相关矩阵注释热图。

  1. 导入数据

  2. 创建相关矩阵

  3. 设置掩码以隐藏上三角

  4. 在 Seaborn 中创建热图

  5. 导出热图

你可以在我的 Jupyter Notebook 中找到这篇文章中的代码,位置在这里

1) 导入数据

df = pd.read_csv(“Highway1.csv”, index_col = 0)

figure-name

这个高速公路事故数据集包含汽车事故率(每百万车公里的事故数)以及若干设计变量。关于数据集的更多信息可以在这里找到。

2) 创建相关矩阵

corr_matrix = df.corr()

figure-name

我们通过 .corr 创建相关矩阵。请注意,htype 列在该矩阵中不存在,因为它不是数字型的。我们需要对 htype 进行虚拟化以计算相关性。

df_dummy = pd.get_dummies(df.htype)
df = pd.concat([df, df_dummy], axis = 1)

figure-name

此外,请注意相关矩阵的上三角部分对称于下三角部分。因此,我们的热图无需显示整个矩阵。在下一步中,我们将隐藏上三角部分。

3) 设置掩码以隐藏上三角

mask = np.zeros_like(corr_matrix, dtype=np.bool)
mask[np.triu_indices_from(mask)]= True

让我们来解析上面的代码。np.zeros_like() 返回一个与给定数组具有相同形状和类型的零数组。通过传入相关矩阵,我们得到了如下的零数组。

figure-name

dtype=np.bool 参数覆盖了数据类型,因此我们的数组是布尔数组。

figure-name

np.triu_indices_from(mask) 返回数组上三角部分的索引。

figure-name

现在,我们将上三角部分设置为 True。

mask[np.triu_indices_from(mask)]= True

figure-name

现在,我们有一个可以用来生成热图的掩码。

4) 在 Seaborn 中创建热图

f, ax = plt.subplots(figsize=(11, 15))

heatmap = sns.heatmap(corr_matrix,
                      mask = mask,
                      square = True,
                      linewidths = .5,
                      cmap =coolwarm’,
                      cbar_kws = {'shrink': .4,
                                ‘ticks’ : [-1, -.5, 0, 0.5, 1]},
                      vmin = -1,
                      vmax = 1,
                      annot = True,
                      annot_kws = {“size”: 12})

#add the column names as labels
ax.set_yticklabels(corr_matrix.columns, rotation = 0)
ax.set_xticklabels(corr_matrix.columns)

sns.set_style({'xtick.bottom': True}, {'ytick.left': True})

figure-name

为了创建我们的热图,我们传入第 3 步中的相关矩阵和第 4 步中创建的掩码,以及自定义参数使热图更美观。如果你有兴趣了解每一行的作用,下面是参数的说明。

#Makes each cell square-shaped.
square = True,
#Set width of the lines that will divide each cell to .5
linewidths = .5,
#Map data values to the coolwarm color space
cmap = 'coolwarm',
#Shrink the legend size and label tick marks at [-1, -.5, 0, 0.5, 1]
cbar_kws = {'shrink': .4, ‘ticks’ : [-1, -.5, 0, 0.5, 1]},
#Set min value for color bar
vmin = -1,
#Set max value for color bar
vmax = 1,
#Turn on annotations for the correlation values
annot = True,
#Set annotations to size 12
annot_kws = {“size”: 12})
#Add column names to the x labels
ax.set_xticklabels(corr_matrix.columns)
#Add column names to the y labels and rotate text to 0 degrees
ax.set_yticklabels(corr_matrix.columns, rotation = 0)
#Show tickmarks on bottom and left of heatmap
sns.set_style({'xtick.bottom': True}, {'ytick.left': True})

5) 导出热图

现在你有了热图,我们来导出它。

heatmap.get_figure().savefig(‘heatmap.png’, bbox_inches=’tight’)

如果你发现你有一个非常大的热图导出不正确,可以使用bbox_inches = ‘tight’来防止图像被裁剪。

感谢阅读!欢迎在下面的评论中分享你制作的热图。

个人简介: Julia Kho 是一位对创意问题解决和用数据讲故事充满热情的数据科学家。她曾在环境咨询和空间数据处理方面有过经验。

原文。经许可转载。

相关:

  • PyViz:简化 Python 中的数据可视化过程

  • 让你的数据发声!

  • 适用于小型和大型数据的最佳数据可视化技术


我们的三大课程推荐

1. Google 网络安全证书 - 快速进入网络安全职业生涯。

2. Google 数据分析专业证书 - 提升你的数据分析技能

3. Google IT 支持专业证书 - 支持你所在的组织进行 IT 工作


更多相关话题