Décision Scikit-learn Générer du code Python à partir de règles d'arbre / forêt aléatoire

introduction

L'apprentissage automatique en Python est scikit-learn, mais pour utiliser scikit-learn, vous devez inclure une grande bibliothèque telle que numpy ou scipy. Cependant, si vous souhaitez classer un programme à l'aide d'un modèle d'apprentissage automatique, vous ne voudrez peut-être pas insérer un élément aussi lourd. J'aimerais pouvoir utiliser ce que j'ai appris avec scikit-learn sans numpy, scipy et scikit-learn pour le traitement de la classification.

Par conséquent, cette fois, je présenterai celui qui génère le code de format if-then à partir de l'arbre de décision (DecisionTreeClassifier) et de la forêt aléatoire (RandomForestClassifier) de scikit-learn.

code

Créez un code de fonction qui renvoie le numéro de classe lorsque les données d'objet sont saisies. Dans ce code, le nombre d'échantillons est ajouté pour chaque point de branchement, afin que vous puissiez voir ce qui est important. À propos, cela a été écrit en référence à Code qui était dans stackoverflow. C'était.

Un code comme celui-ci est généré à partir de l'arbre de décision qui a appris les données d'iris.

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

Cahier de référence

Dans le cas d'une forêt aléatoire, il faut un peu de temps pour générer du code à partir de plusieurs arbres et écrire un traitement majoritaire.

en conclusion

J'ai introduit celui qui génère du code Python pour la classification à partir de l'arbre de décision de scikit-learn et de la règle de la forêt aléatoire. Cela permet d'effectuer un traitement de classification directement sans charger le modèle à partir d'une bibliothèque telle que scikit-learn. Par conséquent, il n'est pas nécessaire d'installer numpy, scipy et scikit-learn. De plus, comme il s'agit de code Python ordinaire, je pense que c'est un avantage qu'il est facile de le changer lorsque l'on veut jouer un peu avec les règles.

Cependant, cela ne se limite pas à la génération de code, mais s'il y a de nombreuses fonctionnalités, il a tendance à être très compliqué de sortir le contenu de l'arbre de décision, alors faites attention à son utilisation.

Recommended Posts

Décision Scikit-learn Générer du code Python à partir de règles d'arbre / forêt aléatoire
Arbre de décision et forêt aléatoire
Créer un arbre de décision à partir de 0 avec Python (1. Présentation)
2. Analyse multivariée décrite dans Python 7-1. Arbre de décision (scikit-learn)
Forêt aléatoire équilibrée en python
Utiliser Random Forest avec Python
[Python] Tutoriel personnel sur l'arbre de décision
Générer du code QR en Python
[Python] Générer un code QR en mémoire
Créer un arbre déterminé avec scikit-learn
Exécuter du code Python à partir de l'interface graphique C #
2.Faites un arbre de décision à partir de 0 avec Python et comprenez-le (2. Bases du programme Python)
Créez un arbre de décision à partir de 0 avec Python et comprenez-le (4. Structure des données)
Créez un arbre de décision à partir de 0 avec Python et comprenez-le (5. Entropie des informations)
Classification multi-étiquettes par forêt aléatoire avec scikit-learn
Générer une classe à partir d'une chaîne en Python
Générer un langage C à partir d'une expression S avec Python
Classification des maladies par Random Forest en utilisant Python
[Note] Exécuter du code Python à partir d'Excel (xlwings)