마지막 내용이다.
모델 학습과 학습 결과 분석을 다루어보자.
모델 학습
이번 강의에서도 Logistic Regression과 XGBoost 의 2가지 Classification 모델을 기준으로 생성 및 학습을 진행하였다.
기본적인 코드는 실전#1과 유사하다.
# Logistic Regression
from sklearn.linear_model import LogisticRegression
# LogisticRegression 모델 생성/학습
model_lr = LogisticRegression(max_iter = 10000)
model_lr.fit(X_train, y_train)
# 모델 학습 결과 평가
from sklearn.metrics import classification_report
pred = model_lr.predict(X_test)
print(classification_report(y_test, pred))
# XGBoost
from xgboost import XGBClassifier
# XGBClassifier 모델 생성/학습
model_xgb = XGBClassifier()
model_xgb.fit(X_train, y_train)
# 모델 학습 결과 평가
pred = model_xgb.predict(X_test)
print(classification_report(y_test, pred))
## 추가 참고 >> model_xgb.fit(X_train, y_train)에서 오류 발생 시 아래 과정을 진행한 뒤 train/test 분리부터 다시 진행
df['Class'] = df['Class'].map(dict(L=0, M=1, H=2))
단순 모델 성능만으로 비교하면 XGBoost 가 조금 더 좋은 성능을 보인다.
모델 학습 결과 심화 분석하기
1. Logistic Regression 모델
모델의 각 변수별 상관성 파악을 위해 bar 그래프를 활용한다.
fig = plt.figure(figsize = (15, 8))
plt.bar(X.columns, model_lr.coef_[0, :])
plt.xticks(rotation = 90)
plt.show()
상관성이 가장 높은 변수로는 결석 횟수가 7회 미만이었고, 보호자가 엄마인 경우와 부모의 서베이 참여가 Yes인 변수들이 그 뒤를 잇는 변수였다.
또 하나의 특징으로는 출생 국가와 국적에서 사우디아라비아가 높은 변수로 나타나는 점이었는데,
이러한 특징을 보고나니 출생 국가와 국적의 상관도가 높을 수 있겠다는 생각이 들었다. 만약 높았다면 둘 중 하나의 변수를 제외하고 모델을 돌려보는 것도 바람직한 방향이 아니었을까?
2. XGBoost 모델
변수별 중요도를 확인한다.
fig = plt.figure(figsize = (15, 8))
plt.bar(X.columns, model_xgb.feature_importances_)
plt.xticks(rotation = 90)
plt.show()
결과에서 가장 중요도가 높은 변수는 스페인어였고, 그 뒤로 결석 횟수가 7회 미만인 변수였다.
로지스틱 모델 결과와 유사하게 사우디아라바이 특징이 높았고,
지질학, 수학 등의 과목도 상대적으로 중요한 변수로 나타났다.
특히 수학 과목은 로지스틱 모델에서도 상관성이 높은 변수 중 하나였는데
이전 시각화 비교에서의 결과와는 사뭇 다른 모델 결과였던 점도 흥미로웠다.
이유로는 교호작용에 의해 특정 변수들 간의 조합으로 모델 학습 시 유의미한 변수로 나타났던 것으로 보인다.
여기까지가 데이터로 살펴보는 우리 아이 학습 성공/실패 요소에 대한 과정이다.
이번 실전에서 수치형 데이터와 범주형 데이터를 모두 같이 살펴본 점이 의미있었던 것 같다.
100% 만족스럽지는 않지만, 위 내용을 기반으로 범주형 데이터에 대한 전처리를 더욱 의미있게 진행한다면 모델 성능의 개선과 결과 해석에 있어 더욱 명료한 답을 찾을 수 있을 것이라 생각한다.
http://bit.ly/3Y34pE0
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'Analytics > Study' 카테고리의 다른 글
실전#3 데이터로 알아보는 리그 오브 레전드의 승리 공식(2) (1) | 2023.03.06 |
---|---|
실전#3 데이터로 알아보는 리그 오브 레전드의 승리 공식(1) (0) | 2023.03.05 |
실전#2 데이터로 살펴보는 우리 아이 학습 성공/실패 요소(4) (0) | 2023.03.03 |
실전#2 데이터로 살펴보는 우리 아이 학습 성공/실패 요소(3) (0) | 2023.03.02 |
실전#2 데이터로 살펴보는 우리 아이 학습 성공/실패 요소(2) (0) | 2023.03.01 |