logo

[데이터 시각화 소개] 히트맵

 

히트맵의 개요

 

히트맵 소개

히트맵의 정의

히트맵(Heatmap)은 데이터의 매트릭스를 색상의 강도로 표현하는 데이터 시각화 기법입니다. 단일 차원의 값을 가진 셀(cell)들로 구성되며, 각 셀의 색상은 해당 위치에서의 값을 나타냅니다. 이런 시각적 표현은 패턴, 변이, 밀도 등 데이터의 특성을 한눈에 파악하기 용이하게 해줍니다.

히트맵 사용 사례

히트맵은 다양한 분야에서 사용됩니다. 예를 들어, 생물정보학에서는 유전자 발현 데이터를 시각화하는 데 사용되며, 웹 분석에서는 사용자의 페이지 클릭 위치나 시간을 기반으로 하는 웹사이트 활동을 표현하는 데 활용됩니다. 또한, 통계 분야에서는 변수 간의 상관 관계를 표현하는 데 유용하며, 기계학습에서는 특성 간의 관계나 중요도를 시각화하는 데 쓰이곤 합니다.

 

데이터 강도의 색상 표현

색상 스케일과 데이터 강도

히트맵에서 색상은 데이터 값을 시각적으로 표현하는 핵심 요소입니다. 값의 강도는 색상의 밝기나 채도를 변화시켜 나타낼 수 있습니다. 일반적으로 높은 값을 갖는 데이터 포인트는 더 짙거나 뜨거운 색으로, 낮은 값을 갖는 데이터 포인트는 더 차가운 색으로 표현됩니다.

색상 맵의 선택과 의미

색상 맵(Color Map)은 데이터의 의미와 맥락을 전달하는 중요한 역할을 합니다. 예를 들어, 'reds'나 'oranges' 같은 뜨거운 색은 긍정적이거나 높은 값을 나타내는 데 적절할 수 있으며, 'blues'나 'greens'와 같은 차가운 색은 낮은 값을 나타내는 데 적합할 수 있습니다. Seaborn이나 Matplotlib 같은 시각화 라이브러리는 다양한 내장 색상 맵을 제공하며, 특정 데이터 유형에 맞게 선택할 수 있습니다.

 

Python 코드 예시: Seaborn을 이용한 히트맵 생성

아래는 Seaborn 라이브러리를 이용하여 히트맵을 생성하는 간단한 예시 코드입니다. 여기서는 간단한 상관관계 매트릭스(correlation matrix)를 히트맵으로 표현합니다.

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

# 데이터 샘플 생성
np.random.seed(0)
data = np.random.rand(10, 12)
data_df = pd.DataFrame(data)

# 상관관계 매트릭스 계산
corr = data_df.corr()

# 히트맵 생성
plt.figure(figsize=(10, 8))
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.title('Heatmap of Correlation Matrix')
plt.show()

이 코드는 10개의 특성을 가진 샘플 데이터를 생성하고, 이 데이터의 상관관계 매트릭스를 계산한 다음, 'coolwarm' 색상 맵을 이용하여 히트맵을 그립니다. 여기서 annot=True 옵션은 셀에 숫자 값을 표시하도록 합니다. 이 히트맵은 데이터 특성 간의 상관 관계를 색상의 변화로 직관적으로 파악할 수 있게 해줍니다.


 

Seaborn 라이브러리 소개

Seaborn은 Python에서 데이터 시각화를 더 쉽고 아름답게 하기 위해 개발된 라이브러리입니다. matplotlib에 기반을 두고 있지만, 보다 고급 인터페이스를 제공하여 다양한 색상 팔레트, 통계용 그래프 기능과 함께 복잡한 시각화를 간편하게 만들 수 있습니다. 데이터 구조에 대한 이해를 돕는 통계적 그래픽을 쉽게 생성할 수 있습니다.

# Seaborn 라이브러리를 설치합니다. 이미 설치되어 있다면 이 과정을 건너뛰세요.
!pip install seaborn
 

히트맵 생성 기본

sns.heatmap() 함수의 사용법

Seaborn 라이브러리를 사용하여 히트맵을 생성하기 위한 기본적인 방법은 sns.heatmap() 함수를 사용하는 것입니다. 이 함수는 데이터 매트릭스를 입력으로 받아, 색상의 강도를 이용해서 데이터의 패턴을 보여주는 히트맵을 만듭니다.

import seaborn as sns
import matplotlib.pyplot as plt

# 테스트를 위한 랜덤 데이터 생성
import numpy as np
data = np.random.rand(10, 12)

# 히트맵 생성
sns.heatmap(data)
plt.show()

색상 팔레트 설정

heatmap 함수에서 cmap 매개변수를 이용하면 히트맵의 색상 팔레트를 쉽게 변경할 수 있습니다. Seaborn은 다양한 내장 색상 팔레트를 제공합니다.

# 색상 팔레트를 'coolwarm'으로 설정한 히트맵
sns.heatmap(data, cmap='coolwarm')
plt.show()
 

히트맵 커스터마이징

주석 추가하기

heatmap 함수의 annot 매개변수를 True로 설정하면 각 셀에 값을 표시할 수 있습니다. 이는 데이터를 더 명확히 이해하는 데 도움이 될 수 있습니다.

# 각 셀에 값 표시하기
sns.heatmap(data, cmap='viridis', annot=True)
plt.show()

컬러바 설정

히트맵의 컬러바는 데이터의 색상과 연관된 값을 보여줍니다. heatmap 함수에서 cbar 매개변수를 통해 컬러바의 표시 여부를 지정할 수 있으며, cbar_kws 매개변수를 이용해서 컬러바를 더 상세하게 커스터마이징할 수 있습니다.

# 컬러바를 숨기기
sns.heatmap(data, cmap='magma', cbar=False)
plt.show()

이와 같이 Seaborn 라이브러리를 사용하여, 히트맵을 쉽게 생성하고 커스터마이징할 수 있습니다. 이를 통해, 복잡한 데이터 세트 내의 패턴이나 상관 관계를 직관적으로 시각화할 수 있습니다.


상관 행렬의 시각화는 데이터 사이의 관계를 이해하는 데 중요한 도구 중 하나입니다. 상관 행렬은 변수 간의 선형 관계의 강도와 방향을 나타내는 숫자 표입니다.

 

상관 행렬이란?

상관 행렬은 데이터 셋 내의 모든 변수들 간의 상관 계수를 행렬 형태로 나타낸 것입니다. 상관 계수는 -1과 1 사이의 값을 가지며, -1은 완벽한 음의 선형 관계, 0은 선형 관계의 부재, 1은 완벽한 양의 선형 관계를 의미합니다. 상관 행렬에서 대각선은 항상 1이며, 이는 각 변수가 자기 자신과 완벽한 상관 관계를 가짐을 나타냅니다.

 

상관 행렬 계산 방법

상관 행렬은 Python의 Pandas 라이브러리를 사용하여 쉽게 계산할 수 있습니다. DataFrame.corr() 메서드를 사용하면 모든 변수 간의 상관 계수를 계산할 수 있습니다.

import pandas as pd

# 데이터 프레임 생성
df = pd.DataFrame(data)

# 상관 행렬 계산
correlation_matrix = df.corr()
 

Seaborn과 Matplotlib를 이용한 상관 행렬 시각화

상관 행렬을 위한 데이터 준비

우선, 상관 행렬 계산을 위한 데이터를 준비합니다. 예를 들면 주식 시장의 여러 주식들, 기상 데이터의 여러 변수들 또는 사회 경제적 지표 등의 데이터 세트를 사용할 수 있습니다.

히트맵을 통한 상관 행렬 시각화

상관 행렬을 시각화하기 위해 Seaborn과 Matplotlib 라이브러리를 사용합니다. Seaborn의 heatmap() 함수는 행렬 데이터를 색상의 형태로 표현해 주는 효과적인 시각화 도구입니다. 히트맵은 데이터의 상관 관계를 직관적으로 이해하는 데 도움을 줍니다.

다음은 Seaborn을 사용하여 상관 행렬을 시각화하는 코드 예시입니다:

import matplotlib.pyplot as plt
import seaborn as sns

# 데이터 프레임 생성 및 상관 행렬 계산
df = pd.DataFrame(data)
correlation_matrix = df.corr()

# 히트맵 시각화
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', linewidths=.5, fmt=".2f")
plt.show()

이 코드는 데이터프레임 df에서 상관 행렬을 계산하고, 이를 이용하여 히트맵을 생성합니다. annot=True는 히트맵의 각 셀에 상관 계수 값을 표시하라는 의미이며, cmap='coolwarm'는 색상 맵을 지정합니다. linewidths는 셀 사이의 선의 너비를, fmt=".2f"는 숫자 형식을 지정합니다.

이 방법을 통해, 변수 간의 선형 관계의 강도와 방향을 쉽게 파악할 수 있으며, 복잡한 데이터 셋에서 변수 간의 관계를 빠르게 이해할 수 있습니다.


 

산점도와 데이터 밀도 개념

산점도는 두 변수 간의 관계를 시각적으로 표현한 그래프로, 데이터 포인트들이 X-Y 평면 위에 점으로 나타납니다. 이는 데이터 세트 내 변수 간의 상관 관계를 파악하거나 분포를 살펴보기 위해 널리 사용됩니다.

데이터 밀도는 이러한 산점도 상에 나타나는 데이터 포인트들의 밀집도를 의미합니다. 특히, 높은 데이터 밀도 구역은 데이터 포인트들이 서로 근접해 있음을 나타내며, 이를 통해 데이터의 집중되는 영역이나 패턴을 파악할 수 있습니다.

 

데이터 밀도 표현 방법

sns.kdeplot 함수의 사용

Seaborn 라이브러리의 sns.kdeplot 함수는 커널 밀도 추정(Kernel Density Estimation, KDE)을 사용하여 데이터의 밀도를 시각화합니다. 이 함수를 사용하면 산점도 상의 데이터 밀도를 부드러운 곡선의 형태로 표현할 수 있으며, 변수의 분포를 보다 직관적으로 이해할 수 있습니다.

import seaborn as sns
import matplotlib.pyplot as plt

# 예제 데이터 로드
iris = sns.load_dataset("iris")

# 산점도에서 데이터 밀도의 시각화
sns.kdeplot(data=iris, x="sepal_length", y="sepal_width", cmap="Reds", shade=True, bw_adjust=0.5)
plt.title('Sepal Length vs Sepal Width KDE')
plt.show()

이 예제에서는 붓꽃(iris) 데이터 세트의 'sepal_length'와 'sepal_width' 두 변수 간의 데이터 밀도를 시각화합니다. cmap은 색상 맵을 지정하며, shade 옵션을 True로 설정하여 밀도 영역에 색을 채웁니다. bw_adjust는 밴드폭을 조정하여 추정의 부드러움을 제어합니다.

 

히트맵을 이용한 밀도 시각화

밀도 기반 히트맵 생성

sns.kdeplot을 사용한 밀도 기반 히트맵 생성은 데이터 포인트들 사이의 밀도를 색상의 강도로 나타내는 방법입니다. 데이터 포인트가 많이 집중된 영역일수록 더 짙은 색상을 사용하여 표현합니다. 이는 데이터 분포의 패턴과 밀집 영역을 한눈에 파악하기 쉽게 해줍니다.

색상 팔레트와 데이터 밀도

색상 팔레트는 데이터의 밀도를 표현하는 데 있어 중요한 역할을 합니다. cmap 파라미터를 통해 적절한 색상 팔레트를 선택하는 것은 데이터 밀도를 시각적으로 효과적으로 전달하는 데 필수적입니다. Seaborn은 다양한 내장 색상 팔레트를 제공하며, cmap에 지정함으로써 간단히 적용할 수 있습니다. 데이터 밀도가 높을수록 색상은 더 짙게 표현되며, 이를 통해 사용자는 쉽게 데이터의 밀집 영역을 확인할 수 있습니다.

위의 코드 예제와 같이, 색상 팔레트를 조절하고 데이터의 밀도에 따른 색상의 농도를 조절함으로써 효과적인 데이터 밀도의 시각화를 구현할 수 있습니다.

Previous
산점도