728x90
스태킹 Stacking
- 여러 모델들을 결합하여 결과를 도출하는 앙상블 기법 중 하나.
- 각 모델들의 예측 결과를 학습하여 최종 예측결과를 도출
1. 라이브러리 임포트
- 기본 모델로 knn, random forest, adaboost, decisiont tree 4가지
- 마지막 모델로 logistic regression
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from utils.common import show_metrics
2. 데이터 로드 및 조회
- 행 569, 열 30개 데이터
- 악성과 양성사이 큰 비율 차이는 없음
data = load_breast_cancer()
X = data.data
y = data.target
print(data.DESCR)
import pandas as pd
print(pd.Series(y).value_counts())
3. 각 분류기 학습, 성능 확인
- 각 분류기 학습 및 성능 출력, 예측 데이터 쌓기
- lr_final에 학습 용 데이터를 만들기 위해 예측 데이터 shape가 (4, 114) 인것을 전치. 114행 4열 데이터로 변환
def get_model_train_eval(model, ftr_train=None, ftr_test=None,
tgt_train=None, tgt_test=None):
model.fit(ftr_train, tgt_train)
y_pred = model.predict(ftr_test)
show_metrics(y_test, y_pred)
return model, y_pred
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
random_state=10)
knn = KNeighborsClassifier()
rf = RandomForestClassifier(random_state=10)
dt = DecisionTreeClassifier()
ada = AdaBoostClassifier()
lr_final = LogisticRegression()
clfs = [knn, rf, dt, ada]
y_preds = []
for idx, clf in enumerate(clfs):
print("\n", clf.__class__.__name__)
clfs[idx], y_pred = get_model_train_eval(clf, ftr_train=X_train, ftr_test=X_test,
tgt_train=y_train, tgt_test=y_test)
y_preds.append(y_pred)
y_preds = np.array(y_preds)
print(y_preds.shape)
y_preds = y_preds.T
4. 최종 스태킹 모델 학습 결과
- 랜덤 포레스트 하나만 사용한 경우 보다는 성능이 저하되었으나, 타 분류기들보다는 개선된 결과를 보임
- 실제 사용시 하이퍼 파라미터를 최적으로 튜닝한 후에 사용하여야 함.
final, y_pred = get_model_train_eval(lr_final, ftr_train=y_preds, ftr_test=y_preds,
tgt_train=y_test, tgt_test=y_test)
300x250
'인공지능' 카테고리의 다른 글
파이썬머신러닝 - 19. 선형 회귀 모델과 선형 회귀를 이용한 보스턴 주택 가격 예측 (0) | 2020.12.04 |
---|---|
파이썬머신러닝 - 18. 선형 회귀 모델과 경사 하강 법 이론과 구현 (0) | 2020.12.03 |
파이썬머신러닝 - 16. 캐글 신용카드 사기 검출 (0) | 2020.11.30 |
파이썬머신러닝 - 15. LightGBM을 이용한 캐글 산탄데르 고객 만족도 예측하기 (0) | 2020.11.28 |
파이썬머신러닝 - 14. LightGBM (0) | 2020.11.27 |