pythonML

[pythonML] 보팅(Voting)-soft voting/hard voting

독립성이 강한 ISFP 2022. 3. 29. 22:37
728x90
반응형

# 보팅 : 서로 다른 알고리즘을 가진 분류기를 결합하는 것

- 하드 보팅(Hard Voting)

: 예측한 결괏값들중 다수의 분류기가 결정한 예측값을 최종 보팅 결괏값으로 선정 (다수결)

- 소프트 보팅(Soft Voting) =>일반적으로 소프트 보팅이 예측 성능이 좋아서 더 많이 사용

:분류기들의 레이블 값 결정 확률을 모두 더하고 이를 평균해서 이들 중 가장 높은 레이블 값을 최종 결괏값으로 선정

 

 

 

# 보팅 분류기(Voting Classifier)

-로지스틱 회귀, KNN을 이용하여 소프트 보팅 분류기 생성

import pandas as pd

from sklearn.ensemble import VotingClassifier # 보팅 앙상블 클래스
from sklearn.linear_model import LogisticRegression #선형 회귀
from sklearn.neighbors import KNeighborsClassifier # KNN
from sklearn.datasets import load_breast_cancer # 유방암 데이터 세트

from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

cancer = load_breast_cancer() # 유방암 데이터 세트 로딩

data_df = pd.DataFrame(cancer.data, columns=cancer.feature_names)
data_df.head(3)

 

 

- VotingClassifier: 보팅 분류기 생성 클래스
- estimators: 리스트 값으로 보팅에 사용될 여러 개의 classifier객체들을 튜플형식으로 입력
- Voting:  hard :하드보팅/ soft: 소프트보팅

# 개별 모델은 로지스틱 회귀와 KNN 임. 
lr_clf = LogisticRegression() #로지스틱 회귀
knn_clf = KNeighborsClassifier(n_neighbors=8) # KNN

# 개별 모델을 소프트 보팅 기반의 앙상블 모델로 구현한 분류기 
vo_clf = VotingClassifier( estimators=[('LR',lr_clf),('KNN',knn_clf)] , voting='soft' )

X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, 
                                                    test_size=0.2 , random_state= 156)

# VotingClassifier 학습/예측/평가. 
vo_clf.fit(X_train , y_train)
pred = vo_clf.predict(X_test)
print('Voting 분류기 정확도: {0:.4f}'.format(accuracy_score(y_test , pred)))

# 개별 모델의 학습/예측/평가.
classifiers = [lr_clf, knn_clf]
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 분류기 정확도: 0.9474
LogisticRegression 정확도: 0.9386
KNeighborsClassifier 정확도: 0.9386

결론 : voting 분류기가 개별 분류기(로지스틱,KNN) 보다 정확도가 높음.

BUT 보팅으로 여러 개의 기반 분류기를 결합한다고 해서 무조건 기반 분류기 보다 에측 성능이 향상되지는 않는다.

728x90
반응형