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.
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
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.
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