<분류> 의사 결정 나무 (DecisionTreeClassifier)
Data Analyticsㅤ/ㅤMachine Learningㅤ

<분류> 의사 결정 나무 (DecisionTreeClassifier)

로지스틱 회귀

- 스무고개처럼 나무 가지치기를 통해 소그룹으로 나누어 판별하는 것

Step

- Step 0 : 모델 import

from sklearn.tree import DecisionTreeClassifier

- Step 1 : 모델 선언

dtc = DecisionTreeClassifier(random_state=0, max_depth=5)

- Step 2 : 모델 학습

dtc.fit(x_train, y_train)

- Step 3 : 예측

dtc_pred = dtc.predict(x_valid)

- Step 4: 평가

(dtc_pred == y_valid).mean()

 

트리 알고리즘 시각화 (export_graphviz)

- depth 별로 어떤 기준으로 학습을 했는지를 보고자 할 때

from sklearn.tree import export_graphviz
from subprocess import call

def graph_tree(model):
    # .dot 파일로 export 해주기
    export_graphviz(model, out_file='tree.dot')

    # call은 생성된 .dot파일을 .png로 변환
    call(['dot', '-Tpng', 'tree.dot', '-o', 'decistion-tree.png', '-Gdpi=600'])

    # .png 출력
    return Image(filename = 'decistion-tree.png', width=500)

graph_tree(dtc)

  • depth가 0 부터 5 까지 있는 트리
  • value에 클래스 갯수가 나타나있음 (예제는 unbalanced)
  • gini 계수 : 불순도를 의미하며, 계수가 높을 수록 엔트로피가 크다는 의미 (클래스가 혼잡하게 섞여있다)
  • gini 계수를 기준으로 낮춰가며 분류를 해 나아가는 것

max_depth 파라미터 : 과적합 방지, level(depth)를 결정함