[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI

[scikit-learn 라이브러리] BaggingClassifier (배깅분류기)

inu 2020. 8. 13. 09:02
반응형

배깅

  • 중복을 허용한 랜덤 샘플링으로 만든 훈련 세트(부트스트랩)를 사용하여 각 내부 모델을 다르게 학습시킴
  • 분류기가 predict_proba() 메소드를 지원하는 경우 확률값을 평균하여 예측을 수행한다. (소프트보팅 차용)
  • 없는 경우 가장 빈도가 높은 클래스 레이블이 예측 결과가 된다. (하드보팅 차용)

사용예제

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer

# 데이터 로드
cancer = load_breast_cancer()

X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, random_state=66)
  • 유방암 데이터를 불러오고 학습데이터와 테스트데이터로 나눈다.
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import BaggingClassifier

# oob_score : 부스트래핑에 포함되지 않는 샘플을 기반으로 훈련된 모델을 평가
model = BaggingClassifier(LogisticRegression(solver='liblinear'), n_estimators=100,oob_score=True,n_jobs=1,random_state=42)

model.fit(X_train, y_train)

# 평가
print("훈련 세트 정확도 : {:.3f}".format(model.score(X_train, y_train)))
print("테스트 세트 정확도 : {:.3f}".format(model.score(X_test, y_test)))
print("OOB 샘플의 정확도 : {:.3f}".format(model.oob_score_))
==결과==
훈련 세트 정확도 : 0.953
테스트 세트 정확도 : 0.951
OOB 샘플의 정확도 : 0.946
  • LogisticRegression을 내부 모델로 가지는 배깅분류기를 만든다. (최적화에 사용할 알고리즘(solver)는 liblinear)
  • n_estimators가 100개이므로 모델은 100개 포함되어 있다.
  • n_jobs 값을 증가시키면 내부적으로 멀티 프로세스를 사용하여 작업을 수행한다.
반응형