Heim >Backend-Entwicklung >Python-Tutorial >Wie extrahiere ich Entscheidungsregeln aus einem Scikit-Learn-Entscheidungsbaum?
Entscheidungsregeln aus dem Scikit-Learn-Entscheidungsbaum extrahieren
Entscheidungsbäume, ein weit verbreiteter Algorithmus für maschinelles Lernen, liefern Erkenntnisse durch Modellierung der Entscheidungsfindung Prozesse als hierarchische Struktur von Regeln. Das explizite Extrahieren dieser Entscheidungsregeln kann jedoch eine Herausforderung sein. Dieser Artikel beschreibt einen umfassenden Ansatz zum Extrahieren textueller Entscheidungsregeln aus einem trainierten Scikit-Learn-Entscheidungsbaum.
Python-Code für die Extraktion von Entscheidungsregeln
Das folgende Python-Code-Snippet verwendet die zugrunde liegenden Datenstrukturen von Scikit-Learn-Entscheidungsbäumen, um menschenlesbare Entscheidungspfade zu durchlaufen und zu generieren:
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)
Erstellen einer gültigen Python-Funktion
Dieser Code durchläuft die Baum rekursiv und druckt jede bedingte Aufteilung und jeden Schwellenwert aus. Das Ergebnis ist eine gültige Python-Funktion, die den Entscheidungsprozess des trainierten Entscheidungsbaums effektiv emuliert.
Beispielausgabe
Stellen Sie sich zum Beispiel einen Baum vor, der dies versucht gibt seine Eingabe zurück, eine Zahl zwischen 0 und 10. Die generierte Python-Funktion würde so aussehen:
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.]]
Vorteile und Vorsichtshinweise
Diese Methode bietet eine klare und testbare Darstellung der Entscheidungsregeln des Baums. Beachten Sie jedoch, dass der Code davon ausgeht, dass jeder Knoten im Baum ein binärer Entscheidungsknoten ist. Wenn Ihr Entscheidungsbaum nicht-binäre Entscheidungsknoten enthält, müssen Sie den Code entsprechend anpassen.
Das obige ist der detaillierte Inhalt vonWie extrahiere ich Entscheidungsregeln aus einem Scikit-Learn-Entscheidungsbaum?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!