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

DDD
Libérer: 2024-10-28 02:26:02
original
898 Les gens l'ont consulté

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)
Copier après la connexion

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.]]
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!