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에 주로 분포