반응형
보팅의 유형
- 하드 보팅 : 최종 아웃풋 결과 중 각 모델들이 가장많이 선택한 아웃풋을 최종 아웃풋으로 설정한다.
- 소프트 보팅 : 최종 아웃풋 결과의 확률값을 기반으로 평균을 내어, 이중 가장 확률값이 높은 아웃풋을 최종 아웃풋으로 설정한다.
보팅 분류기 모듈 사용예제
import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
cancer = load_breast_cancer()
data_df = pd.DataFrame(cancer.data, columns = cancer.feature_names)
# 데이터를 훈련셋과 테스트셋으로 나누기
X_train, X_test, y_train, y_test = train_test_split(cancer.data,cancer.target,test_size=0.2,random_state=156)
- 유방암 데이터셋을 불러와 훈련셋과 테스트셋으로 나누었다.
from sklearn.ensemble import VotingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
# 보팅모델에 넣기 위한 개별 모델은 로지스틱 회귀와 KNN
logistic_regression = LogisticRegression()
knn = KNeighborsClassifier(n_neighbors=8)
voting_model = VotingClassifier(estimators=[ ('LogisticRegression', logistic_regression),
('KNN', knn) ], voting='soft')
- 사이킷런에서 선형회귀모델과 KNN모델을 불러오고, Voting분류기 모델에 포함시켰다.
- 보팅방식은 소프트보팅으로 선택했다.
classifiers = [logistic_regression, knn]
for classifier in classifiers:
classifier.fit(X_train, y_train)
pred = classifier.predict(X_test)
class_name = classifier.__class__.__name__
print('{0} 정확도: {1:.4f}'.format(class_name, accuracy_score(y_test, pred)))
voting_model.fit(X_train, y_train)
pred = voting_model.predict(X_test)
print('보팅 분류기의 정확도: {0: .4f}'.format(accuracy_score(y_test, pred)))
==결과==
ogisticRegression 정확도: 0.9386
KNeighborsClassifier 정확도: 0.9386
보팅 분류기의 정확도: 0.9474
- 두 모델과 보팅 분류기 모델을 학습시키고(fit) 평가했다.
- 보팅 분류기가 더 우수한 성능을 보임을 알 수 있다.
- 하지만 단순히 여러 알고리즘을 마구잡이로 결합한다고해서 항상 성능이 향상되는 것은 아님에 유의하자.
반응형
'🛠 기타 > Data & AI' 카테고리의 다른 글
[scikit-learn 라이브러리] BaggingClassifier (배깅분류기) (0) | 2020.08.13 |
---|---|
[scikit-learn 라이브러리] RandomForestClassifier (랜덤 포레스트 분류) (1) | 2020.08.12 |
앙상블 학습 (0) | 2020.08.12 |
Pandas 데이터프레임 apply, replace (0) | 2020.08.09 |
과적합방지 - Drop out, 배치정규화 (0) | 2020.08.07 |