반응형
voting 이란?
다른 알고리즘이 낸 결과물에 대하여 투표를 통해 결정하는 방식이다.
voting과 Bagging은 투표방식이라는 공통점을 가지지만 차이점이 있다.
- voting은 다른 알고리즘 model을 조합해서 사용한다.
- bagging은 동일 알고리즘을 다른 sample 조합을 사용한다.
보팅의 유형
Hard voting - 각자의 분류를 했을 때 가장 투표를 많이 받은걸 선택한다.
Soft voting - 분류에 따라서 1,2가 있었을때 각각의 확률을 구하고 이것을 더해서 평균을 낸다. 그때 가장 높았던 것을 사용한다.
성능 측면에서는 소프트 보팅이 상대적으로 우수하다.
Voting 구현
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import LabelEncoder , OneHotEncoder , StandardScaler , MinMaxScaler , Binarizer
from sklearn.model_selection import train_test_split , GridSearchCV
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score , roc_auc_score
from sklearn.metrics import confusion_matrix, precision_recall_curve , roc_curve
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
import warnings
warnings.filterwarnings('ignore')
from sklearn.neighbors import KNeighborsClassifier
from sklearn.ensemble import VotingClassifier
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
cancer.keys()
cancer_df = pd.DataFrame(cancer.data, columns=cancer.feature_names)
cancer_df.head()
# 소프트 보팅
# 앙상블을 구현하는 보팅 분류기 - votingClassifier
dtc = DecisionTreeClassifier()
lr = LogisticRegression()
rfc = RandomForestClassifier()
knn = KNeighborsClassifier()
# 앙상블 모델을 구현하기 위해서는 구현을 위한 분류기(votingClassifier)
voting_model = VotingClassifier([('dtc',dtc),('lr',lr),('knn',knn)],voting='soft')
#데이터 세트를 분리
X_train , X_test, y_train, y_test = train_test_split(cancer.data,cancer.target, test_size=.2,random_state =156)
# 보팅 분류기를 이용해서 학습/예측/평가
voting_model.fit(X_train, y_train)
y_pred = voting_model.predict(X_test)
print('VOTING ACCURACY:', accuracy_score(y_test,y_pred))
# 개별 학습기에 대한 학습/예측/평가
classifier = [dtc,lr,knn]
for c in classifier:
c.fit(X_train,y_train)
pred=c.predict(X_test)
print(c.__class__.__name__, accuracy_score(y_test,pred))
# 하드 보팅
# 앙상블을 구현하는 보팅 분류기 - votingClassifier
dtc = DecisionTreeClassifier()
lr = LogisticRegression()
rfc = RandomForestClassifier()
knn = KNeighborsClassifier()
# 앙상블 모델을 구현하기 위해서는 구현을 위한 분류기(votingClassifier)
voting_model = VotingClassifier([('dtc',dtc),('lr',lr),('knn',knn)],voting='hard')
#데이터 세트를 분리
X_train , X_test, y_train, y_test = train_test_split(cancer.data,cancer.target, test_size=.2,random_state =156)
# 보팅 분류기를 이용해서 학습/예측/평가
voting_model.fit(X_train, y_train)
y_pred = voting_model.predict(X_test)
print('VOTING ACCURACY:', accuracy_score(y_test,y_pred))
# 개별 학습기에 대한 학습/예측/평가
classifier = [dtc,lr,knn]
for c in classifier:
c.fit(X_train,y_train)
pred=c.predict(X_test)
print(c.__class__.__name__, accuracy_score(y_test,pred))
-참조 : injo.tistory.com/22
[Chapter 4. 분류] 앙상블 학습
4-2. 앙상블 학습 In [1]: from IPython.core.display import display, HTML display(HTML(" ")) 1. 앙상블 학습이란?¶ 앙상블(Ensemble) 학습¶ 앙상블이란 여러 개의 알고리즘을 사용하여, 그..
injo.tistory.com
앙상블 학습 개요
앙상블 학습 이란 앙상블 학습을 통한 분류는 여러 개의 분류기를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측 도출하는 기법을 말한다. 앙상블 학습의 유형은 보팅, 배깅, 부스팅
ariz1623.tistory.com
반응형
'Data scientist > Machine Learning' 카테고리의 다른 글
[ML/DL] XGboost의 정의와 구현 및 hyper parameter 설정 (0) | 2020.11.13 |
---|---|
[ML/DL] 앙상블 학습 (Ensemble Learning): 3.Boosting(부스팅)이란? (0) | 2020.11.05 |
[ML/DL] 앙상블 학습 (Ensemble Learning): 1. bagging(배깅)이란? (0) | 2020.11.05 |
[ML/DL] 앙상블 학습 (Ensemble Learning): bagging,voting,boosting (0) | 2020.11.03 |
[ML/DL] DecisionTree 구현 및 hyper parameter 설정 (1) | 2020.11.03 |