공부/A.I

엑스트라 트리

래울 2021. 7. 29. 20:41

엑스트라 트리. 

 

  - 후보 특성을 무작위로 분할한 다음 최적의 분할을 찾는다.

  - 랜덤포레스트의 경우 DecisionTreeClassifier(splitter = 'best') 를 고정으로 사용하지만, 엑스트라 트리는

     DecisionTreeClassifier(splitter = 'random') 을 사용하고, 부트스트랩 샘플링은 적용하지 않는다.

     * splitter : 각 트리에서 분할을 선택하는데 사용하는 전략

  - 각 트리가 만든 확률값을 평균하여 예측한다.

 

from sklearn.ensemble import ExtraTreesClassifier
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer

## n_jobs= -1 , 컴퓨터의 모든 코어를 사용하겠다는 의미
Xm, ym = make_moons(n_samples=100, noise=0.25, random_state=3)
Xm_train, Xm_test, ym_train, ym_test = train_test_split(
    Xm, ym, stratify=ym, random_state=42)

xtree = ExtraTreesClassifier(n_estimators=5, n_jobs=-1, random_state=0)
xtree.fit(Xm_train, ym_train)
print(xtree.score(Xm_train, ym_train)) ##moon 데이터셋
print(xtree.score(Xm_test, ym_test))

cancer = load_breast_cancer()
Xc_train, Xc_test, yc_train, yc_test = train_test_split(
    cancer.data, cancer.target, random_state=0)
xtree2 = ExtraTreesClassifier(n_estimators=100, n_jobs=-1, random_state=0)
xtree2.fit(Xc_train, yc_train)
print(xtree2.score(Xc_train, yc_train)) ##암 데이터셋
print(xtree2.score(Xc_test, yc_test))