더북(TheBook)

사이킷런에는 BaggingClassifier 분류기가 이미 구현되어 있습니다. 이 클래스는 ensemble 모듈에서 임포트할 수 있습니다. 여기서는 훈련 데이터셋으로부터 추출한 부트스트랩 샘플에서 가지치기가 없는 500개의 결정 트리를 학습하여 앙상블을 만들겠습니다.15

>>> from sklearn.ensemble import BaggingClassifier
>>> tree = DecisionTreeClassifier(criterion='entropy',
...                               random_state=1,
...                               max_depth=None)
>>> bag = BaggingClassifier(base_estimator=tree,
...                         n_estimators=500,
...                         max_samples=1.0,
...                         max_features=1.0,
...                         bootstrap=True,
...                         bootstrap_features=False,
...                         n_jobs=1,
...                         random_state=1)

그다음 배깅 분류기와 가지치기가 없는 단일 결정 트리에서 훈련 데이터셋과 테스트 데이터셋의 예측 정확도를 계산하여 성능을 비교하겠습니다.

>>> from sklearn.metrics import accuracy_score
>>> tree = tree.fit(X_train, y_train)
>>> y_train_pred = tree.predict(X_train)
>>> y_test_pred = tree.predict(X_test)
>>> tree_train = accuracy_score(y_train, y_train_pred)
>>> tree_test = accuracy_score(y_test, y_test_pred)
>>> print('결정 트리의 훈련 정확도/테스트 정확도 %.3f/%.3f'
...       % (tree_train, tree_test))
결정 트리의 훈련 정확도/테스트 정확도 1.000/0.833

 

 


15 역주 사이킷런 0.20 버전부터는 전처리 단계가 포함된 파이프라인도 BaggingClassifierBaggingRegressorbase_estimator에 사용할 수 있습니다. 코드에서 BaggingClassifiermax_samples, max_features, bootstrap, bootstrap_features에 지정한 값은 모두 기본값입니다. n_estimators의 기본값은 10입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.