공부/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))