출력된 정확도 값을 보면 가지치기가 없는 결정 트리는 모든 훈련 샘플을 정확하게 예측했습니다. 테스트 데이터셋의 정확도는 확실히 낮기 때문에 모델의 분산이 높다는 것(과대적합)을 나타냅니다.

    >>> bag = bag.fit(X_train, y_train)
    >>> y_train_pred = bag.predict(X_train)
    >>> y_test_pred = bag.predict(X_test)
    >>> bag_train = accuracy_score(y_train, y_train_pred)
    >>> bag_test = accuracy_score(y_test, y_test_pred)
    >>> print('배깅의 훈련 정확도/테스트 정확도 %.3f/%.3f'
    ...       % (bag_train, bag_test))
    배깅의 훈련 정확도/테스트 정확도 1.000/0.917

    결정 트리와 배깅 분류기의 훈련 정확도가 훈련 데이터셋에서 비슷하지만 (둘 다 100%) 테스트 데이터셋의 정확도로 미루어 보아 배깅 분류기가 일반화 성능이 더 나을 것 같습니다. 다음에는 결정 트리와 배깅 분류기의 결정 경계를 비교해 봅시다.

    >>> x_min = X_train[:, 0].min() - 1
    >>> x_max = X_train[:, 0].max() + 1
    >>> y_min = X_train[:, 1].min() - 1
    >>> y_max = X_train[:, 1].max() + 1
    >>> xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),
    ...                      np.arange(y_min, y_max, 0.1))
    >>> f, axarr = plt.subplots(nrows=1, ncols=2,
    ...                         sharex='col',
    ...                         sharey='row',
    ...                         figsize=(8, 3))
    >>> for idx, clf, tt in zip([0, 1],
    ...                         [tree, bag],
    ...                         ['Decision tree', 'Bagging']):
    ...     clf.fit(X_train, y_train)
    ...
    ...     Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
    ...     Z = Z.reshape(xx.shape)
    ...     axarr[idx].contourf(xx, yy, Z, alpha=0.3)
    ...     axarr[idx].scatter(X_train[y_train==0, 0],
    ...                        X_train[y_train==0, 1],
    ...                        c='blue', marker='^')
    ...     axarr[idx].scatter(X_train[y_train==1, 0],
    ...                        X_train[y_train==1, 1],
    ...                        c='green', marker='o')
    ...     axarr[idx].set_title(tt)
    >>> axarr[0].set_ylabel('Alcohol', fontsize=12)
    >>> plt.tight_layout()
    >>> plt.text(0, -0.2,
    ...          s='OD280/OD315 of diluted wines',
    ...          ha='center', va='center', fontsize=12, transform=axarr[1].transAxes)
    >>> plt.show()
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.