Seaborn 中的相关热图

Manav Narula 2024年2月15日
Seaborn 中的相关热图

对于数据科学家来说,相关性是一个关键的潜在因素。它说明数据集中的变量如何相互关联以及它们如何相互移动。相关值的范围从 -1 到 +1。0 相关性表示两个变量相互独立。正相关表示变量向同一方向移动,负相关表示相反。

我们可以使用 seaborn 模块绘制相关矩阵。它有助于轻松理解数据集,并且经常用于分析工作。

本教程将介绍如何使用 seaborn.heatmap() 函数在 Python 中绘制相关矩阵。

热图用于以图形方式表示不同值的不同颜色阴影的矩阵值。它非常清楚地可视化了整个矩阵。

在下面的代码中,我们将使用 Python 中的热图表示相关矩阵。

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

df = pd.DataFrame(
    {
        "Day 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Day 2": [1, 2, 8, 4, 3, 9, 5, 2],
        "Day 3": [4, 6, 5, 8, 6, 1, 2, 3],
        "Day 4": [5, 8, 9, 5, 1, 7, 8, 9],
    }
)

sns.heatmap(df.corr())

seaborn 中的相关热图

上面的代码创建了一个基本的相关热图。corr() 函数用于返回 DataFrame 的相关矩阵。我们还可以使用此函数计算其他类型的相关性。请注意颜色轴栏中每个值的颜色阴影。

我们还可以使用不同的参数自定义最终图形。请参考下面的代码。

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

df = pd.DataFrame(
    {
        "Day 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Day 2": [1, 2, 8, 4, 3, 9, 5, 2],
        "Day 3": [4, 6, 5, 8, 6, 1, 2, 3],
        "Day 4": [5, 8, 9, 5, 1, 7, 8, 9],
    }
)

sns.heatmap(df.corr(), vmin=-1, vmax=+1, annot=True, cmap="coolwarm")

具有不同参数的 seaborn 中的相关热图

注意使用了这么多参数。vminvmax 参数用于指定颜色轴的比例。此处的 cmap 参数更改用于绘图的配色方案。annot 参数用于在方块上显示相关值。我们可以进一步使用 linewidthlinecolor 参数来使正方形的边框变暗并指定边框的颜色。我们可以使用 cbar_kws 参数自定义颜色条。

请注意,如果你删除主对角线一侧的一半数据,你不会丢失任何重要信息,因为它是重复的。因此,我们也可以创建一个三角形图。

下面的代码片段实现了这一点。

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

df = pd.DataFrame(
    {
        "Day 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Day 2": [1, 2, 8, 4, 3, 9, 5, 2],
        "Day 3": [4, 6, 5, 8, 6, 1, 2, 3],
        "Day 4": [5, 8, 9, 5, 1, 7, 8, 9],
    }
)

upp_mat = np.triu(df.corr())

sns.heatmap(df.corr(), vmin=-1, vmax=+1, annot=True, cmap="coolwarm", mask=upp_mat)

seaborn 中的三角相关热图

在上面的代码中,我们首先使用 numpy.triu(),它返回矩阵的上三角,然后我们使用 heatmap() 函数的 mask 参数对其进行屏蔽。类似地,我们可以使用 numpy.tril() 函数屏蔽下三角形。

我们可以得到的另一个有趣的表示是我们只能映射一个变量并找到它与不同变量的相关性。

例如,

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

df = pd.DataFrame(
    {
        "Day 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Day 2": [1, 2, 8, 4, 3, 9, 5, 2],
        "Day 3": [4, 6, 5, 8, 6, 1, 2, 3],
        "Day 4": [5, 8, 9, 5, 1, 7, 8, 9],
    }
)

upp_mat = np.triu(df.corr())

sns.heatmap(df.corr()[["Day 1"]], vmin=-1, vmax=+1, annot=True, cmap="coolwarm")

具有不同变量的 seaborn 中的相关热图

在上面的例子中,我们绘制了 Day 1 变量与其他变量的相关性。

作者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

相关文章 - Seaborn Heatmap