강의자료/머신러닝

[캐글(Kaggle) 따라하기]03.데이터 시각화를 위한 Seaborn

파아란 기쁨 2022. 10. 25. 15:10
학습목표

머신러닝은 데이터와의 씨름이다. 데이터를 어떻게 이해하느냐에 따라 모델링 전략이 달라지고 예측 성능에 결정적인 영향을 준다. 주로 탐색적 데이터 분석 과정에서 수행하는 데이터 시각화는 평면적인 데이터에서 주요한 특성을 드러내는 가장 효과적인 수단이다.

따라서 시각화 기법들을 잘 이해하고 적절히 활용하는 것이 중요하다.

다양한 시각화 기법의 개념, 효과 , 구현 방법 등을 알아 보자.

 

Seaborn 라이브러리란? 

Seaborn 라이브러리는 데이터 시각화를 손쉽게 도와주는 matplotlib 기반의 Python 데이터 시각화 라이브러리이다.

Seaborn 라이브러리에 대한 정보는 (https://seaborn.pydata.org/) 에서 참고 하면 된다.

Seaborn 라이브러리에서 제공하는 함수는 다음과 같다.

  • histplot():히스토그램
  • kdeplot():커널밀도추정함수 그래프
  • displot():분포도
  • rugplot():러그플롯
  • barplot():막대그래프
  • pointplot() : 포인트플롯
  • boxplot(): 박스플롯
  • violinplot():바이올린플롯
  • countplot():카운트플롯

 

실습하기

1. 데이터 가져오기

seaborn에서 제공하는 타이타닉 데이터를 가지고 분석하는 방법을 살펴 보자.

데이터를 살펴 보면 수치형 데이터(age,fare)와 범주형 데이터(sex,embarked,class 등)이 같이 있다.

여기에서 수치형 데이터와 범주형 데이터을 시각화 하는 방법을 살펴 본다.

※ 수치형데이터는 연속형 데이터를 의미, 범주형 데이터는 순서형 데이터라고도 하며 사칙연산이 불가능한 데이터(예,A,B,C 와 같은 학점 데이터)

2. 수치형 데이터 시각화 하기

수치형 데이터는 일정한 범위 내에서 데이터가 어떻게 분포되어 있는지 확인 하는 것이 중요하다.

고르게 퍼져 있을 수도 있고 어느 한곳에 몰려 있을 수도 있다.

이러한 분포를 확인하는데 유용한 함수는 다음과 같다.

  • histplot():히스토그램
  • kdeplot():커널밀도추정함수 그래프
  • displot():분포도
  • rugplot():러그플롯

1. histplot() 사용

위의 타이타닉 데이터에서 나이의 분포를 histplot()를 사용해서 출력해 보자.

data 파라미터에 전체 데이터셋을 전달하고 x 파라미터에 나타내고 싶은 특징을 입력하면 된다. 

히스토 그램은 기본적으로 하나에 대한 빈도를 나타내는데 이 빈도를 특정 범주별로 구분해 보고 싶다면 hue 파라미터를 이용해서 전달하면 된다.

위의 그래프에서 각 나이별 생존여부(alive)를 알고 싶다면 다음과 같이 표현해 볼 수 있다.

위의 그래프에서 회색구간은 두 그래프가 겹친구간이므로 이 그래프를 통해 나이가 10세 미만이면 생존확률이 높고 80세 근처에서 생존확률이 높은 것을 알 수 있다. 

따라서 머신러닝에서 생존확률을 예측할 때 나이 특징을 활용해야 되는 것을 알 수 있다.

2. kdeplot(커널밀도 추정함수 그래프)

히스토그램을 곡선으로 연결한 그래프로 이해하면 된다.

나이별 생존 유무를 그래프로 표현하면 다음과 같다.

3. displot(분포도)

분포도는 히스토그램과 커널밀도 추정함수 그래프를 동시에 그릴 수 있다. kde=True 옵션을 전달하면 커널밀도 추정함수 그래프를 그린다.

3. 범주형 데이터 시각화

범주형 데이터는 해당 범주 안에서 수치형 데이터 값이 어떻게 달라지는지 파악할 때 많이 사용된다.

이러한 범주형 데이터 시각화 방법에는 다음과 같다.

  • barplot():막대그래프
  • pointplot() : 포인트플롯
  • boxplot(): 박스플롯
  • violinplot():바이올린플롯
  • countplot():카운트플롯

1.barplot:막대그래프

위의 데이터에서 탑승자 등급별 운임을 barplot 를 이용해서 그려 보자.

x파라미터에 범주형 데이터 class, y파라미터에 운임 fare 를 전달하면 위와 같이 first 클래스의 운임이 가장 높은 것을 알 수 있다.

2. pointplot

포인트플롯 역시 막대그래프와 동일한 정보를 제공하는데 박스가형태가 아닌 점과 선으로 나타내는 점만 다르다.

위의 탑승자 등급별 운임 사항을 확인해 보자.

3. boxplot

박스플롯은 막대그래프나 포인트플롯보다 더 많은 정보를 제공한다.

구체적으로 5가지 정보(최솟값,1사분위-하위25%,2사분위-중앙값,3사분위-상위25%,최댓값,이상치)

박스플롯을 이용하여 탑승자 등급별 나이를 그려 보면 다음과 같다.

x에 범주형 데이터를 전달,y에 수치형 데이터를 전달 한다.

위의 Second class 데이터를 살펴 보면 다음의 의미를 가지고 있다.

4. countplot

카운트 플롯은 범주형 데이터의 개수를 확인 할때 사용하는 그래프이다.

위의 데이터에서 탑승자의 등급별 인원수를 파악해 보자.

 

참고]

데싸노트의 실전에서 통하는 머신러닝

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기