graphviz로 간단한 분류 트리 그리기

소개



근거의 설명의 용이함, 이해의 용이함이라고 말한 관점에서, 결정 나무는 의사 결정에 있어서 편리한 수법의 하나입니다. 이러한 가운데, 생성한 분류 기준을 그림으로 나타내는 경우에, 불필요한 정보가 불필요한 경우가 있다고 생각합니다. 이번에는 각종 정보를 제외한 심플한 결정 트리를 분류 트리라고 부르고 생성하는 방법을 정리합니다.

하고 싶은 일



정보를 줄이고 분류 트리를 그립니다.

예제



아야메의 데이터 세트에 대해, 깊이가 3의 심플한 분류 트리를 묘화하는 경우, 다음과 같이 된다고 생각합니다. (프로그램 할애)



이번에는 gini 불순도, 전체 데이터 수, 각 데이터 수 등을 제외한 간단한 분류 트리를 만드는 것을 목표로합니다.

스크립트



sklearn의 tree.export_graphviz 함수로 얻은 데이터를 변경하여 결정 트리의 형식을 변경합니다.
#! env python
# -*- coding: utf-8 -*-

import graphviz
from sklearn.datasets import load_iris
from sklearn import tree

def remove_gini_to_value(str, n):
    for _ in range(n):
        start, end = str.find('gini = '), str.find('class = ', str.find('gini = '))
        rm_str = str[start:end]
        str = str.replace(rm_str, '')
    return str

if __name__ == '__main__':
    iris = load_iris()
    # 決定木の作成
    clf = tree.DecisionTreeClassifier(max_depth=3)
    clf = clf.fit(iris.data, iris.target)
    # 決定木の描画
    data = tree.export_graphviz(clf, feature_names=iris.feature_names,
                            class_names=iris.target_names,impurity=True,
                            filled=False, rounded=True)
    # gini不純度,合計データ数,各データ数を削除
    data = remove_gini_to_value(data, clf.tree_.node_count)
    graph = graphviz.Source(data)
    display(graph)
    graph.render('tree',format='png')



참고



결정목의 작성과 가시화에 있어서 참고가 된 사이트를 정리해 둡니다.
DecisionTreeClassifier 함수의 내용, 파라미터 설명 등
htps : // 기주 b. 이 m / s shiki t ぇ an / s shiki t ぇ an / b b b / 2 bee d55847 예 70d363 bdb 14 예ぁせ s. py#L612
export_graphviz 함수 설명
htps : // 기주 b. 이 m / s shiki t-u rn / s shiki t-u rn / b ぉ b / 2 bee d5584 / sk ぇ rn / t ree / _ x port. py#L665
결정 트리의 내부 요소 추출
ぇtps://s しきぇあrん. 오 rg/s타 bぇ/아우트_에아 mpぇs/t레에/pぉt_응ㄔㅇㅇl_t레에_st루 c얽힘. HTML

좋은 웹페이지 즐겨찾기