Machine Learning/Advanced (hands on machine learning)

18. 결정트리 실습

jwjwvison 2021. 5. 21. 23:07

1. moons 데이터셋에 결정 트리를 훈련시키고 세밀하게 튜닝해보자.

from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split

X,y=make_moons(n_samples=1000,noise=0.4, random_state=42)
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)

 

 DecisionTreeClassifier의 최적의 매개변수를 찾기 위해 교차 검증과 함께 그치드 탐색을 수행한다.

from sklearn.model_selection import GridSearchCV
from sklearn.tree import DecisionTreeClassifier

params={'max_leaf_nodes':list(range(2,100)),'min_samples_split':[2,3,4]}
grid_search_cv=GridSearchCV(DecisionTreeClassifier(random_state=42),params,cv=3,verbose=1)

grid_search_cv.fit(X_train,y_train)

grid_search_cv.best_estimator_

 

 기본적으로 GridSearchCV는 전체 훈련 세트로 찾은 최적의 모델을 다시 훈련시킵니다(refit=False로 지정해서 바꿀 수 있다). 그래서 별도로 작업할 필요가 없다. 모델의 정확도를 바로 평가할 수 있다

from sklearn.metrics import accuracy_score

y_pred=grid_search_cv.predict(X_test)
accuracy_score(y_test,y_pred)