Seaborn の相関ヒートマップ

Manav Narula 2021年11月20日
Seaborn の相関ヒートマップ

相関関係は、データサイエンティストにとって重要な根本的な要因です。データセット内の変数が互いにどのように関連しているか、およびそれらが互いにどのように移動するかを示します。相関の値の範囲は-1 から+1 です。0 相関は、2つの変数が互いに独立していることを示します。正の相関は変数が同じ方向に移動することを示し、負の相関は反対の方向に移動することを示します。

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 の相関ヒートマップ

非常に多くのパラメーターが使用されていることに注意してください。vmin および vmax 引数は、色軸のスケールを指定するために使用されます。ここでの cmap 引数は、プロットに使用される配色を変更します。annot パラメーターは、正方形に相関値を表示するために使用されます。さらに、linewidth および linecolor パラメーターを使用して、正方形の境界線を暗くし、境界線の色を指定できます。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() 関数を使用して下の三角形をマスクできます。

私たちが得ることができるもう 1つの興味深い表現は、1つの変数のみをマップし、さまざまな変数との相関関係を見つけることができるということです。

例えば、

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