>  기사  >  백엔드 개발  >  scikit-learn 의사결정 트리에서 의사결정 규칙을 추출하는 방법은 무엇입니까?

scikit-learn 의사결정 트리에서 의사결정 규칙을 추출하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-27 09:14:03870검색

How to Extract Decision Rules from scikit-learn Decision Trees?

scikit-learn 의사결정 트리에서 의사결정 규칙 추출

문제 설명:

학습된 의사결정 트리 모델의 기본 의사결정 규칙을 텍스트 목록으로 추출하시겠습니까?

해결책:

tree_to_code 함수를 사용하면 다음과 같은 유효한 Python 함수를 생성할 수 있습니다. scikit-learn 의사결정 트리의 결정 규칙을 나타냅니다.

<code class="python">from sklearn.tree import _tree

def tree_to_code(tree, feature_names):
    tree_ = tree.tree_
    feature_name = [
        feature_names[i] if i != _tree.TREE_UNDEFINED else "undefined!"
        for i in tree_.feature
    ]
    print("def tree({}):".format(", ".join(feature_names)))

    def recurse(node, depth):
        indent = "  " * depth
        if tree_.feature[node] != _tree.TREE_UNDEFINED:
            name = feature_name[node]
            threshold = tree_.threshold[node]
            print("{}if {} <= {}:".format(indent, name, threshold))
            recurse(tree_.children_left[node], depth + 1)
            print("{}else:  # if {} > {}".format(indent, name, threshold))
            recurse(tree_.children_right[node], depth + 1)
        else:
            print("{}return {}".format(indent, tree_.value[node]))

    recurse(0, 1)</code>

예:

입력(0 사이의 숫자)을 반환하려고 시도하는 의사결정 트리의 경우 10) tree_to_code 함수는 다음 Python 함수를 인쇄합니다.

<code class="python">def tree(f0):
  if f0 <= 6.0:
    if f0 <= 1.5:
      return [[ 0.]]
    else:  # if f0 > 1.5
      if f0 <= 4.5:
        if f0 <= 3.5:
          return [[ 3.]]
        else:  # if f0 > 3.5
          return [[ 4.]]
      else:  # if f0 > 4.5
        return [[ 5.]]
  else:  # if f0 > 6.0
    if f0 <= 8.5:
      if f0 <= 7.5:
        return [[ 7.]]
      else:  # if f0 > 7.5
        return [[ 8.]]
    else:  # if f0 > 8.5
      return [[ 9.]]</code>

주의 사항:

다음과 같은 일반적인 문제를 피하세요.

  • 리프 노드를 식별하기 위해 tree_.threshold == -2에 의존하지 마세요. 대신 tree.feature 또는 tree.children_*을 확인하세요.
  • 정의되지 않은 기능에 해당할 수 있는 정수를 피하면서 기능 이름을 올바르게 지정하세요.
  • 재귀 함수에서는 단일 if 문이면 충분합니다.

위 내용은 scikit-learn 의사결정 트리에서 의사결정 규칙을 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.