카테고리 없음

GradientBoostingClassifier

김야키 2019. 6. 23. 22:34

  • 데이터셋 : load_breast_cancer from sklearn.datasets (유방암 데이터셋)

 

In [1]:
#-*- coding:utf-8 -*-
%matplotlib inline
import matplotlib.pyplot as plt
# 그래디언트 부스팅 회귀 Gradient Bossting
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import train_test_split
# 유방암 데이터 셋 선언
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
In [2]:
x_train, x_test, y_train, y_test = train_test_split(cancer.data, cancer.target, random_state = 0)

# 트리 최대 깊이 : 3(default)
gbrt = GradientBoostingClassifier(random_state = 0)
gbrt.fit(x_train, y_train)

# Overfitting
print("훈련 세트 정확도 : {:.3f}".format(gbrt.score(x_train, y_train)))
print("테스트 세트 정확도 : {:.3f}".format(gbrt.score(x_test, y_test)))
 
훈련 세트 정확도 : 1.000
테스트 세트 정확도 : 0.958
In [3]:
# 트리 최대 깊이 : 1
gbrt1 = GradientBoostingClassifier(random_state = 0, max_depth = 1)
gbrt1.fit(x_train, y_train)

# Overfitting
print("훈련 세트 정확도 : {:.3f}".format(gbrt1.score(x_train, y_train)))
print("테스트 세트 정확도 : {:.3f}".format(gbrt1.score(x_test, y_test)))
 
훈련 세트 정확도 : 0.991
테스트 세트 정확도 : 0.972
In [4]:
# learning_rate(학습률) : 0.01(default)
gbrt01 = GradientBoostingClassifier(random_state = 0, learning_rate = 0.01)
gbrt01.fit(x_train, y_train)

# Overfitting
print("훈련 세트 정확도 : {:.3f}".format(gbrt01.score(x_train, y_train)))
print("테스트 세트 정확도 : {:.3f}".format(gbrt01.score(x_test, y_test)))
 
훈련 세트 정확도 : 0.988
테스트 세트 정확도 : 0.965
In [5]:
# 전체 feature중에서 요소별 중요도를 출력하기 위한 함수
import numpy as np
def plot_feature_importances_cancer(model):
    n_features = cancer.data.shape[1]
    plt.barh(range(n_features), model.feature_importances_, align='center')
    plt.yticks(np.arange(n_features), cancer.feature_names)
    plt.xlabel("Classifier importance")
    plt.ylabel("Classifier")
    plt.ylim(-1, n_features)
In [6]:
# 오버피팅 결과 출력
plot_feature_importances_cancer(gbrt)