Maschinelles Lernen in Python ist Scikit-Lernen, aber um Scikit-Lernen zu verwenden, müssen Sie eine große Bibliothek wie Numpy oder Scipy einbinden. Wenn Sie jedoch ein Programm anhand eines maschinellen Lernmodells klassifizieren möchten, möchten Sie möglicherweise kein so schweres Element einfügen. Ich wünschte, ich könnte das, was ich mit Scikit-Learn gelernt habe, ohne Numpy, Scipy und Scikit-Learn für die Klassifizierungsverarbeitung verwenden.
Daher werde ich dieses Mal den Code vorstellen, der aus dem Entscheidungsbaum (DecisionTreeClassifier) und der Zufallsstruktur (RandomForestClassifier) von scikit-learn einen Wenn-Dann-Formatcode generiert.
Erstellen Sie einen Funktionscode, der die Klassennummer bei der Eingabe der Feature-Daten zurückgibt. In diesem Code wird die Anzahl der Stichproben für jeden Verzweigungspunkt hinzugefügt, damit Sie sehen können, was wichtig ist. Dies wurde übrigens unter Bezugnahme auf [Code, der sich im Stackoverflow befand] geschrieben (http://stackoverflow.com/questions/20224526/how-to-extract-the-decision-rules-from-scikit-learn-decision-tree). Es war.
Ein solcher Code wird aus dem Entscheidungsbaum generiert, der die Irisdaten gelernt hat.
def f(sepal_length=0, sepal_width=0, petal_length=0, petal_width=0):
"""
0 -> setosa
1 -> versicolor
2 -> virginica
"""
if petal_width <= 0.800000011921: # samples=150
return 0 # samples=50
else:
if petal_width <= 1.75: # samples=100
if petal_length <= 4.94999980927: # samples=54
if petal_width <= 1.65000009537: # samples=48
return 1 # samples=47
else:
return 2 # samples=1
else:
if petal_width <= 1.54999995232: # samples=6
return 2 # samples=3
else:
if petal_length <= 5.44999980927: # samples=3
return 1 # samples=2
else:
return 2 # samples=1
else:
if petal_length <= 4.85000038147: # samples=46
if sepal_length <= 5.94999980927: # samples=3
return 1 # samples=1
else:
return 2 # samples=2
else:
return 2 # samples=43
Im Fall einer zufälligen Gesamtstruktur ist ein wenig Zeit und Mühe erforderlich, da Code aus mehreren Bäumen generiert und die Mehrheitsverarbeitung geschrieben werden muss.
Einführung in das Generieren von Python-Code zur Klassifizierung aus Scikit-Lernentscheidungsbäumen und zufälligen Gesamtstrukturregeln. Dies ermöglicht es, die Klassifizierungsverarbeitung direkt durchzuführen, ohne das Modell aus einer Bibliothek wie scikit-learn zu laden. Daher ist es nicht erforderlich, numpy, scipy und scikit-learn zu installieren. Da es sich um gewöhnlichen Python-Code handelt, halte ich es für einen Vorteil, dass es leicht zu ändern ist, wenn Sie ein wenig mit den Regeln spielen möchten.
Es ist jedoch nicht auf die Codegenerierung beschränkt. Wenn jedoch viele Funktionen vorhanden sind, ist die Ausgabe des Inhalts des Entscheidungsbaums in der Regel sehr kompliziert. Seien Sie daher vorsichtig bei der Verwendung.
Recommended Posts