본문 바로가기
AI & 머신러닝 coding skill

머신러닝 Decision tree - 앙상블(Ensemble) 기법 - Bagging

by 호빵님 2022. 5. 24.
반응형

앙상블(Ensemble) 기법 - Bagging

이번 실습에서는 Bagging을 사용한 분류기(BaggingClassifier)를 구현하는 방법을 알아보도록 하겠습니다.

배깅 (Bagging)

배깅(Bagging)은 여러 분류 모델을 사용했던 Voting과 달리 동일한 분류 모델만을 사용해야 합니다.

사이킷런에 구현되어 있는 BaggingClassifier를 사용해 동일한 유방암 데이터 셋을 학습, 예측해보고 단일 의사결정 나무 모델과의 결과를 비교해보도록 하겠습니다.


BaggingClassifier를 위한 사이킷런 함수/라이브러리

  • from sklearn.ensemble import BaggingClassifier : 사이킷런에 구현되어 있는 BaggingClassifier를 불러옵니다.
  • BaggingClassifier(base_estimator, n_estimators) : BaggingClassifier를 정의합니다.
    • base_estimator : 앙상블 학습을 진행할 분류 모델 설정(동일한 분류 모델)
    • n_estimators : 사용하고자 하는 분류 모델의 개수
  • [Model].fit(X, y): (X, y) 데이터셋에 대해서 모델을 학습시킵니다.
  • [Model].predict(X): X 데이터를 바탕으로 예측되는 값을 출력합니다.

 

 

import pandas as pd
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 유방암 데이터를 불러오고,학습용 데이터와 테스트용 데이터로 분리하여 반환하는 함수입니다.
def load_data():
    X, y = load_breast_cancer(return_X_y = True)
    
    train_X, test_X, train_y, test_y = train_test_split(X, y, test_size = 0.2, random_state = 156)
    
    return train_X, test_X, train_y, test_y

"""
1. 동일한 모델을 사용하는 BaggingClassifier를 정의하여
   학습시키고, 예측을 수행한 결과를 반환하는 함수를 구현합니다.
   
   Step01. Bagging에 사용할 분류 모델을 설정하여 
           BaggingClassifier를 정의합니다.
           
           모델은 의사결정 나무(DecisionTreeClassifier)를
           사용합니다.
           
           n_estimators는 자유롭게 설정합니다.
   
   Step02. BaggingClassifier를
           학습용 데이터에 맞춰 학습을 시킵니다.
   
   Step03. 테스트 데이터에 대한 예측을 수행합니다.
"""
def Bagging_Clf(train_X, test_X, train_y, test_y):
    
    ba_clf = BaggingClassifier(base_estimator=DecisionTreeClassifier(), n_estimators = 100)
    
    ba_clf.fit(train_X, train_y)
    
    pred = ba_clf.predict(test_X)
    
    return ba_clf, pred
    
# 데이터를 불러오고, 모델 학습 및 예측을 진행하기 위한 함수입니다.
def main():
    
    train_X, test_X, train_y, test_y = load_data()
    
    ba_clf, pred = Bagging_Clf(train_X, test_X, train_y, test_y)
    
    print('Bagging Classifier 정확도 : {0:.4f}'.format(accuracy_score(test_y, pred)))
    
    # 단일 의사결정 나무를 학습했을 때 결과 예측하기
    single_dt = DecisionTreeClassifier()
    single_dt.fit(train_X,train_y)
    single_pred = single_dt.predict(test_X)
    print('Single Decision Tree Classifier 정확도 : {0:.4f}'.format(accuracy_score(test_y, single_pred)))

if __name__ =="__main__":
    main()

 

 

 

*본 포스팅은 DX기업교육 플랫폼인 Elice academy의 머신러닝 심화 과정에서 실습한 코드를 이용해서 작성되었습니다.

https://elice.io/

 
 
 

올인원 디지털 교육 플랫폼 - 엘리스

우리 모두를 위한 교실, 엘리스와 함께 더 나은 기회를 만들어보세요

elice.io

 

 

반응형