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

Scikit-Learn 결정 트리에서 결정 규칙을 추출하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-28 02:26:02887검색

How to Extract Decision Rules from a Scikit-Learn Decision Tree?

Scikit-Learn 결정 트리에서 결정 규칙 추출

널리 사용되는 기계 학습 알고리즘인 결정 트리는 의사 결정을 모델링하여 통찰력을 제공합니다. 규칙의 계층적 구조로 처리됩니다. 그러나 이러한 결정 규칙을 명시적으로 추출하는 것은 어려울 수 있습니다. 이 문서에서는 훈련된 Scikit-Learn 결정 트리에서 텍스트 결정 규칙을 추출하는 포괄적인 접근 방식을 설명합니다.

결정 규칙 추출을 위한 Python 코드

다음 Python 코드 조각은 다음을 활용합니다. Scikit-Learn 의사결정 트리의 기본 데이터 구조를 탐색하여 사람이 읽을 수 있는 의사결정 경로를 생성합니다.

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)

유효한 Python 함수 만들기

이 코드는 트리를 재귀적으로 사용하여 각 조건부 분할 및 임계값을 인쇄합니다. 그 결과는 훈련된 의사결정 트리의 의사결정 프로세스를 효과적으로 에뮬레이션하는 유효한 Python 함수입니다.

출력 예

예를 들어, 0에서 10 사이의 숫자를 입력으로 반환합니다. 생성된 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.]]

이점 및 주의 사항

이 방법은 명확하고 트리의 결정 규칙에 대한 테스트 가능한 표현입니다. 그러나 코드에서는 트리의 각 노드가 이진 결정 노드라고 가정합니다. 의사결정 트리에 비바이너리 의사결정 노드가 포함된 경우 이에 따라 코드를 조정해야 합니다.

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

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