Maison  >  Article  >  développement back-end  >  Comment extraire les règles de décision d'un arbre de décision Scikit-Learn ?

Comment extraire les règles de décision d'un arbre de décision Scikit-Learn ?

DDD
DDDoriginal
2024-10-28 02:26:02887parcourir

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

Extraction des règles de décision de l'arbre de décision Scikit-Learn

Les arbres de décision, un algorithme d'apprentissage automatique largement utilisé, fournissent des informations en modélisant la prise de décision processus en tant que structure hiérarchique de règles. Cependant, extraire explicitement ces règles de décision peut s’avérer difficile. Cet article décrit une approche complète pour extraire des règles de décision textuelles à partir d'un arbre de décision Scikit-Learn formé.

Code Python pour l'extraction de règles de décision

L'extrait de code Python suivant utilise les structures de données sous-jacentes des arbres de décision Scikit-Learn pour parcourir et générer des chemins de décision lisibles par l'homme :

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)

Création d'une fonction Python valide

Ce code traverse le arbre de manière récursive, en imprimant chaque division conditionnelle et chaque seuil. Le résultat est une fonction Python valide qui émule efficacement le processus de prise de décision de l'arbre de décision formé.

Exemple de sortie

Par exemple, considérons un arbre qui tente de renvoie son entrée, un nombre compris entre 0 et 10. La fonction Python générée ressemblerait à ceci :

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.]]

Avantages et mises en garde

Cette méthode fournit un aperçu clair et représentation testable des règles de décision de l'arbre. Notez cependant que le code suppose que chaque nœud de l’arborescence est un nœud de décision binaire. Si votre arbre de décision contient des nœuds de décision non binaires, vous devrez adapter le code en conséquence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn