간단한 예를 통해서
LogisticRegrerssion , KNN 두 개별모델의 성과와
두 모델의 Voting 을 통한 성과를 본다.
여러 분류학습기(estimators)들을 생성하고 예측을 결합하여,
단일 분류기가 가진 것보다 더 나은 예측결과를 도출하기 위한 기법을 말한다.
넓은 의미로 앙상블 학습은 서로 다른 모델을 결합한 것을 얘기하기도 한다.
앙상블 학습의 유형으로 보팅 voting, 배깅 bagging, 부스팅, boosting, 스태킹 stacking 등이 있다.
In [ ]:
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import VotingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
In [ ]:
# 위스콘신 유방암 데이터 세트 로딩
cancer = load_breast_cancer()
In [ ]:
# 개별 모델 : 로지스틱 회귀와 KNN
lr = LogisticRegression(solver='liblinear')
knn = KNeighborsClassifier(n_neighbors=8)
In [ ]:
# voiting classifier 설정
vc = VotingClassifier(estimators=[('LR', lr), ('KNN', knn)], voting='soft')
In [ ]:
# 샘플 나눈기
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, test_size=0.2)
In [ ]:
vc.fit(X_train, y_train)
vc_pred = vc.predict(X_test)
print('Voting 분류기 정확도: {0: 0.4f}'.format(accuracy_score(y_test, vc_pred)))
Voting 분류기 정확도: 0.9386
In [ ]:
# 개별 모델의 학습/예측/평가
clfs = [lr, knn]
for clf in clfs:
clf.fit(X_train, y_train)
pred = clf.predict(X_test)
class_name = clf.__class__.__name__
print('{0} 정확도: {1: .4f}'.format(class_name, accuracy_score(y_test, pred)))
LogisticRegression 정확도: 0.9211 KNeighborsClassifier 정확도: 0.9298
In [ ]:
'분석 > 파이썬 Python' 카테고리의 다른 글
Python : 기간의 시작, 끝 날짜 구하기 (1) | 2024.07.13 |
---|---|
Python : 문자열안의 특정 부분을 변수치환 (1) | 2024.04.18 |
Python : 순열검정 (비모수) (0) | 2024.01.27 |
Python : 위도.경도로 TimeZone 구하기 (0) | 2020.03.10 |
python : pd.to_numeric() VS astype(np.float64) (1) | 2019.11.27 |