더북(TheBook)

그다음 붓꽃 데이터 샘플을 50%는 훈련 데이터로 나누고, 50%는 테스트 데이터로 나눕니다.

>>> X_train, X_test, y_train, y_test =\
...        train_test_split(X, y,
...                         test_size=0.5,
...                         random_state=1,
...                         stratify=y)

훈련 데이터셋을 사용하여 서로 다른 세 개의 분류기를 훈련합니다.

로지스틱 회귀 분류기

결정 트리 분류기

k-최근접 이웃 분류기

각 분류기를 앙상블로 묶기 전에 훈련 데이터셋에서 10-겹 교차 검증으로 성능을 평가해 보죠.

>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.tree import DecisionTreeClassifier
>>> from sklearn.neighbors import KNeighborsClassifier
>>> from sklearn.pipeline import Pipeline
>>> import numpy as np
>>> clf1 = LogisticRegression(penalty='l2',
...                           C=0.001,
...                           random_state=1)
>>> clf2 = DecisionTreeClassifier(max_depth=1,
...                               criterion='entropy',
...                               random_state=0)
>>> clf3 = KNeighborsClassifier(n_neighbors=1,
...                             p=2,
...                             metric='minkowski')
>>> pipe1 = Pipeline([['sc', StandardScaler()],
...                   ['clf', clf1]])
>>> pipe3 = Pipeline([['sc', StandardScaler()],
...                   ['clf', clf3]])
>>> clf_labels = ['Logistic regression', 'Decision tree', 'KNN']
>>> print('10- 겹 교차 검증:\n')
>>> for clf, label in zip([pipe1, clf2, pipe3], clf_labels):
...     scores = cross_val_score(estimator=clf,
...                              X=X_train,
...                              y=y_train,
...                              cv=10,
...                              scoring='roc_auc')
...     print("ROC AUC: %0.2f (+/- %0.2f) [%s]"
...                % (scores.mean(), scores.std(), label))
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.