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!