이제 전처리 및 모델링 과정! 분석의 끝이 보인다.
이 주제를 실제로 진행했다고 상상해보면, 아마 EDA에서 허덕이고 있었을 것 같다...
우선 앞에서 EDA를 통해 나름 의미있는 데이터프레임 셋을 만들었는데,
이제 해야될 일은 데이터 전처리 과정이다.
우선 다시 한번 더 기억을 상기하기 위해 df 테이블을 살펴보자
변수들 중 수치형과 범주형이 뒤섞여 있고, 최종 타겟은 matchResult로 정리되어있다.
다행스럽게도 범주형 변수들은 Class로 구분된다는 특징이 있다.
이 특징을 참고하여 범주형 변수들만 따로 모아놓은 col_cats를 만들어보자
col_cats = list(filter(lambda s: s.find('Class') >= 0, df.columns))
df_cats = pd.get_dummies(df[col_cats], drop_first = True)
df_cats
filter 기능을 활용하였고, Class가 포함된 컬럼들을 col_cats에 모두 정의한 뒤
범주형 데이터들을 더미 변수로 바꾸어준다.
이 때 drop_first = True 옵션을 추가하여 다중공선성(multicollinearity)를 방지할 수 있도록 한다.
참고 : https://aintover.tistory.com/83
이렇게 전처리된 범주형 변수들은 df_cats 라는 데이터프레임에 모아두었다.
이후 수치형 데이터를 표준화 하면 기본적인 전처리는 완료된다.
from sklearn.preprocessing import StandardScaler
## 수치형 데이터
X_num = df.drop(['matchResult'] + col_cats, axis = 1)
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_cat = df_cats
X = pd.concat([X_scaled, X_cat], axis = 1)
y = df['matchResult']
수치형 데이터 부분만 살펴보면,
df 데이터프레임에서 matchResult 변수(target)와 범주형 변수들은 제외한 나머지 전체 변수를 X_num에 저장한다.
이후 X_num에 대해서는 StandardScaler를 활용하여 표준화 작업을 진행한다.
범주형 데이터는 앞에서 df_cats에 저장한 내용을 활용하여 X_cat에 저장하였고,
concat을 통해 최종 X를 세팅할 수 있었다. (수치형은 표준화처리 완료된 상태 + 범주형은 더미 변수화 처리된 상태로)
이제 최종 모델 학습을 위해 학습데이터와 테스트데이터를 분리하도록 하자
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)
test_size는 이전부터 쭉 해왔던 데로 0.3을 유지해주고,
random_state는 강의 결과와 동일한 형태로 따라가기 위해 1을 동일하게 맞추었다.
이후 모델 학습 및 평가 부분이 남았는데,
요 부분도 내용이 길어질 것 같아 다음글에 정리하려고 한다.
http://bit.ly/3Y34pE0
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'Analytics > Study' 카테고리의 다른 글
실전#4 오늘 밤 유럽 축구, 어디가 이길까(7) (0) | 2023.03.14 |
---|---|
실전#4 오늘 밤 유럽 축구, 어디가 이길까(6) (0) | 2023.03.13 |
실전#4 오늘 밤 유럽 축구, 어디가 이길까(4) (1) | 2023.03.11 |
실전#4 오늘 밤 유럽 축구, 어디가 이길까(3) (0) | 2023.03.10 |
실전#4 오늘 밤 유럽 축구, 어디가 이길까(2) (0) | 2023.03.09 |