Seaborn의 상관 관계 히트 맵

Manav Narula 2021년7월16일
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