이번 주제의 마지막 장이다.
(이전 실전1,2를 하면서 익숙해진 덕분인지 강의 진도가 빨라졌다)
이전 표준화된 데이터 셋을 가지고 이제 Classification 모델 학습 단계로 들어가자
Classification 모델 학습하기
이전과 마찬가지로 LogisticRegression과 XGBoost 2가지 모델을 생성 및 비교해본다.
기본 코드부터 살펴보자(반복인 느낌이 들수 있지만, 그래도 없이 정리하면 또 아쉽다)
from sklearn.linear_model import LogisticRegression
# LogisticRegression 모델 생성/학습
model_lr = LogisticRegression()
model_lr.fit(X_train, y_train)
# 모델 결과 학습
from sklearn.metrics import classification_report
# Predict를 수행하고 classification_report() 결과 출력하기
pred = model_lr.predict(X_test)
print(classification_report(y_test, pred))
accuracy 기준 0.74로 성능적으로 봤을 때 괜찮은 결과가 나왔다.
이어서 XGBoost도 함께 보자
from xgboost import XGBClassifier
# XGBClassifier 모델 생성/학습
model_xgb = XGBClassifier()
model_xgb.fit(X_train, y_train)
# Predict를 수행하고 classification_report() 결과 출력하기
pred = model_xgb.predict(X_test)
print(classification_report(y_test, pred))
강의에서는 XGBoost의 accuracy도 0.74로 나왔는데 따로 돌렸을 때 결과는 0.72였다.
여러 원인을 그저 추측할 수 있는데
1) 강의 시점과 현재 시점에서 원본 데이터가 일부 바뀌었거나,
2) train_test_split의 random_state 기준 혹은 XGBoost의 로직 일부 처럼 패키지 내 설정이 바뀌었거나
3) 강의에는 미처 담지 못했지만 추가적인 작업 or 확인했던 과정이 있었거나
등이 떠오른다.
무튼, 0.02 차이가 그렇게까지 큰 차이까지는 아니기에 + 저 값 자체의 중요성이 크지는 않기때문에 인지하는 정도로만 정리하고 넘어가자
모델 학습 결과 심화 분석하기
Logistic Regression 모델 계수로 상관성 파악을 위해 아래의 과정으로 plt.bar 차트를 생성한다.
# Logistic Regression 모델의 coef_ 속성을 plot하기
fig = plt.figure(figsize = (15, 8))
model_coef = pd.DataFrame(data=model_lr.coef_[0], index=X.columns, columns=['Model Coefficient'])
model_coef.sort_values(by = 'Model Coefficient', inplace = True, ascending = False)
plt.bar(model_coef.index, model_coef['Model Coefficient'])
plt.xticks(rotation = 90)
plt.grid()
plt.show()
model_coef 라는 데이터프레임을 생성하여 계수가 높은 변수부터 낮은 변수까지 순차적으로 나타내는 그래프를 그릴 수 있다.
결과상으로 보면 blue팀 승리에 가장 높은 상관성을 보이는 변수는 blueGoldDiff, blueExperienceDiff 2개였다.
XGBoost는 feature_importance_ 를 활용하여 변수별 중요도를 확인할 수 있다.
# XGBoost 모델의 feature_importances_ 속성을 plot하기
fig = plt.figure(figsize = (10, 10))
plt.barh(X.columns, model_xgb.feature_importances_)
plt.show()
여기서는 blueGoldDiff의 중요도가 다른 변수들에 비해 월등히 높게 나타난 것을 알 수 있었다.
2개의 결과를 통해 내릴 수 있는 결론 중 하나는 10분까지의 데이터를 기준으로 봤을 때 blue팀의 승리의 바로미터는 골드 격차라고 할 수 있겠다.
이 내용을 정리하면서 추가로 든 생각은
학습된 모델 데이터를 가지고, 데이터 셋에 없던 데이터를 예측했을 때 실제와 예측간의 차이가 어떤지 알고싶었다.
추가로 롤에 대해 살짝 탐구해보니 데이터가 충분하게 있다면
티어별, 패치버전별, 특정 챔피언별 결과 비교도 흥미로울 것 같다는 생각이 들었다.
http://bit.ly/3Y34pE0
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'Analytics > Study' 카테고리의 다른 글
실전#4 오늘 밤 유럽 축구, 어디가 이길까(2) (0) | 2023.03.09 |
---|---|
실전#4 오늘 밤 유럽 축구, 어디가 이길까(1) (0) | 2023.03.08 |
실전#3 데이터로 알아보는 리그 오브 레전드의 승리 공식(2) (1) | 2023.03.06 |
실전#3 데이터로 알아보는 리그 오브 레전드의 승리 공식(1) (0) | 2023.03.05 |
실전#2 데이터로 살펴보는 우리 아이 학습 성공/실패 요소(5) (0) | 2023.03.04 |