본문 바로가기

KT AIVLE SCHOOL

KT aivle school 3차 미니프로젝트 --(2)

미션3. 다양한 모델 사용하기
미션완수 조건: SVM, KNN, Logistic Regression, GBM, XGBoost 알고리즘으로 모델링을 수행하고 예측 정확도를 도출하여 resualt 변수에 저장하고 가장 성능이 좋은 모델을 선정
※ GBM 모델 학습시 시간이 오래 걸리므로 화장실 다녀오기에 좋습니다.(약 15분 소요)

순서: 라이브러리불러오기 -> 데이터불러오기 -> 데이터 전처리 -> 데이터나누기(학습용, 검증용)

 

데이터 불러오기

os.getcwd()를 사용해서 데이터를 불러옵니다.
from sklearn.svm import SVC
svc_model = SVC(random_state=2023)
svc_model.fit(x_train, y_train)
svc_pred = svc_model.predict(x_val)
svc_pred
print('accuracy_score: ',accuracy_score(y_val,svc_pred))
print('\n confusion_matrix: \n',confusion_matrix(y_val,svc_pred))
print('\n classification_report: \n',classification_report(y_val,svc_pred))
result = pd.DataFrame(columns=['data', 'model_name', 'accuracy_score', 'f1_score'])
result
result.loc[0] = ['train', 'svc', accuracy_score(y_val,svc_pred), f1_score(y_val,svc_pred,average='macro')]
result

여러 알고리즘중 SVC알고리즘으로 모델링을 수행한 예시이고

그 알고리즘을 result변수에다가 저장해서 각 알고리즘을 밑에 차곡차곡 저장해서

비교하는 과정을 거쳤습니다.

 

여기서 

XGBoost 알고리즘 모델링같은 경우에는 문자형 데이터를 학습 할 수 없기에

문자형을 숫자형으로 map핑해준후에 진행하였습니다.

미션3 최종결과물이고 이렇게 하면 각 모델별 성능을 보기 편리한거같습니다.

 

미션4. 모델튜닝

 

위 모델중 XGBoost의 모델을 튜닝하는 작업을 해보았습니다.

params = {'learning_rate': [0.01, 0.1, 0.3], 'max_depth': [2,3,4] }
xgb_model = XGBClassifier(random_state=2023)
gs_xgb_model = GridSearchCV(estimator=xgb_model, param_grid=params, cv = 3, verbose=2)
gs_xgb_model.fit(x_train, y_train)
gs_xgb_pred = gs_xgb_model.predict(x_val)
print('accuracy_score: ',accuracy_score(y_val,gs_xgb_pred))

튜닝해본결과

accuracy_score: 0.9915014164305949

 

튜닝전에비해 0.001정도 향상된것을 볼 수 있었습니다. 애초에 성능이 좋았던 모델이라 큰 변화가 없었습니다.'

 

gs_xgb_model.best_params_

best_params를 이용하여 최적의 결괏값을 도출시킬수있는

{'learning_rate': 0.3, 'max_depth': 3} learning_rate, max_depth 값을 찾을 수 있었습니다.

 

다음으로

XGBoost 모델링할때 사용되었던 feature들중에 중요도분석을 해보았습니다.

importance_sort['feature_importance'] = xgb_hpt_model.feature_importances_
importance_sort

다음과 같이 feature_importances_를 사용하여 중요도 분석을하였고,

 

중요도 순위 높은 변수들을 활용해 그 변수들만 활용하여 다시 모델링을 학습하였을때 다른 정확도를 보여주고

중요도 상위 feature를 몇개까지 학습하였을때 가장 높은 정확도를 도출 할 수 있는 지 보았습니다.

총 119개의 상위 feature를 사용할경우 정확도가 제일 높은걸 확인 할 수 있었습니다.