본문 바로가기

파이썬 머신러닝

[파이썬 머신러닝 완벽 가이드] 10. 시각화

맷플롯립(Matplotlib)

파이썬 시각화를 위한 기반 모듈인 pyplot을 제공하며 이를 통해 시각화를 구현할 수 있습니다.

matplotlib.pyplot모듈을 관용적으로 plt란 이름으로 import한 후 그래프를 그립니다.

 

pyplot 모듈의 두 가지 중요 요소 - figure와 Axes

Figure는 그림을 그리기 위한 컨퍼스의 역할을 수행합니다.

Axes는 실제 그림을 그리는 메서드들을 가집니다. 대부분의 시각화를 수행하는 메서드들이 수행됩니다.

또한 X축, Y축, 타이틀, 범례 등의 속성을 설정하는 데도 이용됩니다.

 

pyplot 모듈의 plt.subplots() 함수

pyplot 모듈의 plt.subplots() 함수를 이용하면 여러 개의 서브플롯들을 생성할 수 있고,

이들을 이용하면 여러 개의 그래프들을 한 번에 시각화할 수 있습니다.

plt.subplots() 함수 수행시 Figure와 Axes 객체를 반환하는 데,

이때 반환되는 Axes객체는 튜플 형태나 넘파이의 ndarray 형태로 반환받을 수 있습니다.

# 아래는 두 개의 subplot, 즉 두 개의 Axes를 생성하되, 열 방향으로 두 개를 배치합니다.
# 또한 전체 크기가 가로 6, 세로 3인 Figure을 생성합니다.
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(6, 3))

여기서 fig는 마찬가지로 Figure 객체를 나타내고, ax1과 ax2는 각각의 서브플롯을 나타냅니다. 

따라서 각 서브플롯에 접근할 때는 ax1, ax2와 같이 각각의 변수를 사용합니다.

 

 
fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(6, 3))

 

여기서 fig는 Figure 객체를 나타내고, ax는 Axes 객체의 배열을 나타냅니다. 

ax는 2개의 서브플롯을 포함하는 배열이므로 각각의 서브플롯에 접근할 때는 ax[0], ax[1]과 같이 인덱싱을 사용합니다.

 

 

시본(seaborn)

시본(Seaborn)은 파이썬의 데이터 시각화 라이브러리로, Matplotlib를 기반으로 다양한 통계 그래픽 기능을 제공합니다.

Seaborn은 Matplotlib보다 사용하기 쉽고 간결한 코드로 풍부한 시각화를 제공하며,

특히 데이터프레임과 같은 구조화된 데이터를 시각화하는 데 특화되어 있습니다.

  1. 통계적 그래픽 지원: Seaborn은 통계적 그래픽을 생성하는 데 특화되어 있습니다. 예를 들어, 선형 회귀 모델의 적합선을 포함한 산점도 플롯, 데이터 분포의 히스토그램과 함께 밀도 추정 곡선을 함께 그리는 히스토그램 등을 제공합니다.
  2. 카테고리형 데이터 시각화: Seaborn은 범주형 데이터를 시각화하는 데 유용합니다. 막대 그래프, 박스 플롯, 바이올린 플롯 등을 생성할 수 있습니다.
  3. 색상 팔레트 및 스타일 지원: Seaborn은 다양한 색상 팔레트와 스타일을 제공하여 그래프의 디자인을 쉽게 변경할 수 있습니다.
  4. 편리한 API: Seaborn은 직관적이고 사용하기 쉬운 API를 제공하여 데이터 시각화를 더욱 간편하게 만듭니다.
  5. Matplotlib 통합: Seaborn은 Matplotlib와 함께 사용할 수 있으므로 Matplotlib의 강력한 기능과 Seaborn의 편리한 API를 함께 활용할 수 있습니다.

 

상관 히트맵(Correlation Heatmap)

상관 히트맵은 데이터프레임의 숫자형 변수 간의 상관 관계를 시각화하는 데 사용됩니다.

칼럼 간의 상관계수값에 해당하는 색상으로 상관 히트맵을 시각화합니다.상관계수는 두 속성(칼럼/피처/변수)들 간의 선형적인 연관 관계를 수치화한 값입니다.두 속성의 값이 서로 상관없으면 0이며, 같은 방향으로 완전히 동일하면 1, 반대 방향으로 완전히 동일하면 -1을 값으로 가집니다.

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

titanic_df = pd.read_csv('titanic_train.csv')
numeric_df = titanic_df.select_dtypes(include='number')
corr = numeric_df.corr()
sns.heatmap(corr, annot=True, fmt='.1f', cbar=True)
plt.show()
  • corr는 데이터프레임의 상관 행렬을 나타냅니다.
  • sns.heatmap() 함수를 사용하여 상관 행렬을 시각화합니다. annot=True는 셀에 상관 계수를 표시하라는 옵션입니다. cmap은 색상 맵을 지정하며, 기본값은 'rocket'으로 설정됩니다. fmt=".1f"는 상관 계수를 소수점 둘째 자리까지 표시하라는 옵션입니다.

어떤 피처들이 타킷과 밀접한 상관관계를 가지고 있는지를 파악하여 피처 엔지니어링을 집중적으로 수행하거나,

피처들끼리 상관도가 매우 높다면 상호 간의 높은 종속관계를 의심하여 특정 피처들을 제거하는 용도로 사용될 수 있습니다.

 


Seaborn heatmap 시각화 시 상관계수가 표시되지 않는 경우

상관계수를 표시하겠다는 인자를 명시해주었음에도 불구하고

첫 줄만 상관계수가 표시되는 경우 버전오류를 의심해볼 수 있습니다.

seaborn 0.12.2에서 해당 오류가 발생하였으며, 0.13.X버전으로 업데이트 하니 문제가 해결되었습니다.

pip show seaborn
pip install --upgrade seaborn

 

 

 

참고문서

https://velog.io/@ljwljy51/Seaborn-패키지-heatmap-시각화-오류-관련

 

Seaborn 패키지 heatmap 시각화 오류 관련

인턴 근무를 하며, 모델링을 하기 전 데이터 분석을 하는 과정에서 변수 간 상관관계를 확인해야 했다.현재 다루고 있는 데이터가 전형적인 정형데이터 형태라 기존 전처리가 깔끔하게 잘 되어

velog.io

 

 

감사합니다.