더북(TheBook)

마지막으로 변수 값의 범위가 서로 다르다는 점에 주의해야 한다. 예를 들어 DiabetesPedigree Function 변수 값은 0에서 2.5 사이인 반면, Insulin 변수 값은 0에서 800 사이다. 변수마다 범위가 다르면 신경망을 훈련시킬 때 문제가 발생할 수 있는데, 범위가 큰 변수가 작은 변수보다 예측에 더 큰 영향을 미치기 때문이다. 2.6.2절에서 변수를 표준화하는 데이터 전처리 방법을 알아본다.

또한, 밀도 차트로 각 특징 변수와 목표 변수 사이의 관계를 알아볼 수 있다. 이번에는 시본을 사용해 밀도 차트를 그려 보자. 시본은 맷플롯립 기반의 파이썬 데이터 시각화 라이브러리다. 각 변수의 밀도 차트를 그리는 코드는 다음과 같다. 각 차트의 당뇨 발병자 분포와 비발병자 분포를 따로 그려서 차이를 볼 수 있게 하자.

from matplotlib import pyplot as plt
import seaborn as sns

# 3 x 3 크기로 서브 차트를 만든다
plt.subplots(3,3,figsize=(10,10))

# 각 특징 변수의 밀도 차트를 그린다
for idx, col in enumerate(df.columns[:-1]):
    ax = plt.subplot(3,3,idx+1)
    ax.yaxis.set_ticklabels([])
    sns.distplot(df.loc[df.Outcome == 0][col], hist=False, axlabel= False, kde_kws={'linestyle':'-', 'color':'black', 'label':"No Diabetes"})
    sns.distplot(df.loc[df.Outcome == 1][col], hist=False, axlabel= False, kde_kws={'linestyle':'--', 'color':'black', 'label':"Diabetes"})
    ax.set_title(col)

# 차트가 여덟 개뿐이므로 마지막 아홉 번째(우측 하단) 서브 차트는 숨긴다
plt.subplot(3,3,9).set_visible(False)
plt.tight_layout()
plt.show()
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.