반응형
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
반응형
'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 |