Maison  >  Article  >  développement back-end  >  Comment extraire des règles de décision des arbres de décision Scikit-Learn en Python ?

Comment extraire des règles de décision des arbres de décision Scikit-Learn en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-26 12:18:03838parcourir

How to Extract Decision Rules from Scikit-Learn Decision Trees in Python?

Extraire les règles de décision des arbres de décision Scikit-Learn

Extraire les règles de décision sous-jacentes d'un arbre de décision entraîné peut fournir des informations précieuses sur sa décision -processus de fabrication. Voici comment le faire dans un format de liste textuelle à l'aide de Python.

Fonction Python :

<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) + depth)
            recurse(tree_.children_right[node], depth + 1)
        else:
            print("{}return {}".format(indent, tree_.value[node]))

    recurse(0, 1)</code>

Exemple d'utilisation :

<code class="python">tree_model = DecisionTreeClassifier().fit(X, y)
tree_to_code(tree_model, feature_names)</code>

Cette fonction parcourt de manière itérative la structure arborescente, imprimant les règles de décision pour chaque branche au fur et à mesure qu'elle les rencontre. Il gère à la fois les nœuds feuilles et les nœuds non feuilles et génère une fonction Python valide qui encapsule le processus de prise de décision de l'arbre.

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