머신러닝&딥러닝/모두의 딥러닝 구현 기록

피마 인디언 데이터 분석 - AutoViz로 탐색적 데이터 분석(EDA) / 모두의 딥러닝

LearnerToRunner 2022. 12. 1. 16:30

 

목표 및 결론

피마 인디언 데이터셋 탐색적 데이터 분석용
AutoViz를 사용하여 데이터 시각화

하지만 타겟 데이터 레이블을 반대로 표기하는 경우가 있으므로
별도의 시각화를 통해 교차검증이 필요한 것이
AutoViz의 단점

 

사전 준비사항

더보기

▶ 데이터셋 다운로드 - 모두의 딥러닝 개정3판 자료실 바로가기

 

  사용할 라이브러리 - AutoViz, 참고자료

- AutoViz를 사용하면 시각화를 굉장히 쉽게할 수 있음

pip install -q AutoViz

 

시각화 코드 및 결과

import pandas as pd
from autoviz.AutoViz_Class import AutoViz_Class

# 데이터 프레임
df_train = pd.read_csv("pima-indians-diabetes3.csv")

AV = AutoViz_Class()

# 데이터프레임 행, 열 수
num_row, num_col = df_train.shape

# 시각화 자료 생성
AV.AutoViz(filename= '', dfte = df_train, depVar = 'diabetes',
	verbose=2, max_rows_analyzed= num_row,
	max_cols_analyzed = num_col)

 

데이터를 분류해서 다양한 플랏을 생성

- bar plots, barplots_pivots, box plots, dist plots, heat maps, pair scatter plots 등

>> 직접 matplotlib, seaborn을 이용해서 시각화할 수 있지만 AutoViz를 이용하면 매우 편함

>> 하지만 AutoViz를 절대 맹신해서는 안된다. 에러가 발생할 수 있음을 꼭 기억하자!

>> 반드시 자신만의 시각화 프로세스를 거쳐 AutoViz의 결과물을 비교검증할 것!

타겟 데이터의 레이블을 반대로 보여주는 경우가 발생함
당뇨병이 없는 사람(0)들의 평균 BMI는 30, 있는 사람의 평균(1) BMI는 35이지만 위 그래프에서는 레이블이 반대로 표기되었음

 

 

>> 아래 내용을 프린트해서 보고해줌

 

참고) 칼럼명
- pregnant: 과거 임신횟수
- plasma: 포도당 부하 검사 2시간 후 공복 혈당농도 (mm Hg)
- pressure: 확장기 혈압 (mm Hg)
- thickness: 삼두근 피부 주름 두께(mm)
- insulin: 혈청 인슐린 (2-hour, mu U/ml)
- BMI: 체질량지수
- pedigree: 당뇨병 가족력
- age: 나이
- diabetes: 당뇨병여부

 

타겟 구성

당뇨병이 아닌사람 500명 (65%), 당뇨병인사람 268(35%)로 구성된 데이터셋

 

변수 간 상관관계 - 전체

당뇨병 여부(diabetes)는 과거임신 횟수(pregnant), 혈당량(plasma), 체질량지수(BMI), 나이(age)와 어느정도 상관관계가 있는 듯 하다. 다만, 혈당을 제외한 특성의 corr 값은 -0.2정도이므로 그렇게 큰 상관관계라고 할 수는 없다. 만약 모델의 성능을 높이려면 feature engineering을 열심히해야할 듯 함

 

과거 임신횟수(pregnant)와 BMI 와 당뇨병 여부 

당뇨가 있는 사람(1)의 임신횟수는 0~10 까지 고르게 분포하는 반면 당뇨가 없는 사람들은 상대적으로 0~5사이에 집중되어있음

 

포도당 부하 검사 2시간 후 공복 혈당농도(plasma)와 당뇨병여부

당뇨환자의 혈당은 120~170사이에 집중적으로 분포되어있음. 당뇨가 없는 사람의 혈당은 100 부근에 분포되어있음

 

삼두근 피부 주름 두께와 당뇨병여부

삼두근 두께의 분포는 당뇨여부에 따라 크게 달라지는 것은 없는듯 함

 

 

확장기 혈압(pressure)과 당뇨병 여부 

확장기 혈압의 분포는 당뇨여부와 크게 상관없는 듯 함. 당뇨가 없는 사람들의 혈압이 전체적으로 조금 더 낮은듯 함

 

혈청 인슐린(insulin)과 당뇨병여부

 

BMI 와 당뇨병 여부 

당뇨환자의 BMI mean, median이 없는 사람보다 더 높음(당뇨환자 mean/median: 35.14 / 34.25, 당뇨없는 사람 mean/media: 30.30/30.05)

 

가족력(pedigree)과 당뇨병 여부 

 

나이(age)와 당뇨병여부

당뇨가 없는 사람들의 나이는 20~30 사이에 집중적으로 분포. 당뇨환자는 30~40에 주로 분포

 

모델의 성능을 높이려면 위 시각화를 통해 얻은 인사이트를 적용해
특징을 추가해 볼 것
728x90