EDA 이후 모델 학습을 위한 데이터 전처리 과정
(실제로는 EDA가 저렇게 스르륵 끝나지는 않지만, 아무래도 강의에서는 정돈된 데이터로 설명해야 전달하고자 하는 내용을 명확히 전달할 수 있다보니 간단히 끝났다.)
여튼 EDA를 잘 진행했다고 보고, 이후 과정으로 들어가면
간단하면서도 중요한 작업이 스케일링 작업이다.
우선 코드부터 정리해보자
from sklearn.preprocessing import StandardScaler
# 수치형 입력 데이터, 범주형 입력 데이터, 출력 데이터로 구분하기
X_num = df[['age', 'creatinine_phosphokinase', 'ejection_fraction', 'platelets', 'serum_creatinine', 'serum_sodium']]
X_cat = df[['anaemia', 'diabetes', 'high_blood_pressure', 'sex', 'smoking']]
y = df['DEATH_EVENT']
# 수치형 입력 데이터를 전처리하고 입력 데이터 통합하기
scaler = StandardScaler()
scaler.fit(X_num)
X_scaled = scaler.transform(X_num)
X_scaled = pd.DataFrame(data = X_scaled, index = X_num.index, columns=X_num.columns)
X = pd.concat([X_scaled, X_cat], axis = 1)
스케일링 작업을 위해서 가장 중요한 부분만 정리하면
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
이 될것이다.
다만 이 작업만으로 충분치 않아 위 코드에서는 추가적인 작업이 들어갔는데
이유를 설명하자면
StandardScaler는 각 변수들을 평균이 0, 표준편차가 1로 변환되도록, 즉 정규분포가 되도록 만들어주는 방법이다.
정규분포가 필요한 이유는, 변수들 간 데이터 사이즈가 각기 다른 상태에서 모델링을 들어가게된다면
실제 영향이 크지 않음에도 데이터 사이즈 자체가 매우 큰 변수가 과대해석될 수 있는
또는 그 반대로 중요한 변수가 데이터 사이즈 문제로 영향도가 없는 변수처럼 해석될 수 있기 떄문이다.
이런 이유로 StandardScaler 작업이 필요하였고,
대상 변수들은 수치형 변수이기에 중간에 수치형과 범주형을 구분한 것이다.
이어 진행되는 fit(X_num)의 의미는 X_num을 입력받아 각 변수별 평균과 표준편차를 계산하고,
transform(X_num)에서 해당 변수를 변환하는 의미이다.
이 때 fit_transform(X_num)을 사용한다면 위의 fit과 transform을 동시 실행할 수도 있다.
전처리 작업을 마무리?하고
(이 역시 추가작업이 필요한 경우 추가작업을 해주는것이 좋다... 로그 변환 등등 최대한 정규분포 형태로 바꿀수 있도록)
그 다음 과정은
학습 데이터와 테스트 데이터 분리 과정
여기서도 일단 코드부터 살펴보자
from sklearn.model_selection import train_test_split
# train_test_split() 함수로 학습 데이터와 테스트 데이터 분리하기
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 1)
# train 데이터 확인해보기
X_train
http://bit.ly/3Y34pE0
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'Analytics > Study' 카테고리의 다른 글
실전#1 에필로그?! (0) | 2023.02.27 |
---|---|
실전#1. 데이터 분석으로 심부전증을 예방할 수 있을까(4) (0) | 2023.02.26 |
실전#1. 데이터 분석으로 심부전증을 예방할 수 있을까(2) (0) | 2023.02.24 |
실전#1. 데이터 분석으로 심부전증을 예방할 수 있을까(1) (0) | 2023.02.23 |
데이터 분석에 대한 일반적인 정리 (0) | 2023.02.22 |