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