Je faisais un arbre de décision en utilisant Weka, mais il était difficile de créer des arffes de données. J'ai créé un arbre de décision avec la bibliothèque d'apprentissage automatique Python scikit-learn. Je voulais l'utiliser L'installation de scikit-learn sera poliment enseignée sur d'autres sites Web
L'objet arbre de décision lui-même est assez facile à faire. Installez Graphviz avec brew (Mac) Parce que la bibliothèque appelée pyparsing a été mise à jour Quand tu veux dessiner
sudo pip install -U pydot pyparsing==1.5.7
Veuillez rétrograder Je ne comprends pas Windows (voix basse)
tree_ex.py
#-*-coding:utf-8 -*-
#La valeur nulle ne peut pas être utilisée → Que dois-je faire?
# yes,non est 1,-1
#Les caractères ne peuvent pas être utilisés
from sklearn import tree
from sklearn.externals.six import StringIO
import pydot
if __name__ == '__main__':
X = [
[0,1],
[0,-1],
[1,1]
]
Y = [1,2,3] #Correspond dans l'ordre du haut
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X,Y) #Ceci complète l'objet d'arbre de décision
#La magie du dessin
dot_data = StringIO()
tree.export_graphviz(clf,out_file = dot_data)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("tree_ex.pdf")
#pre = clf.predict([0,1])
#print pre #Le résultat est 1
X est les données et Y est l'étiquette de chaque donnée. Amarrage de masse X et Y avec la fonction fit (peut-être)
Lorsque la fonction fit est appliquée, clf est un objet d'arbre de décision et un classificateur. Vous pouvez classer à quelle classe les nouvelles données appartiennent avec la fonction de prédiction commentée.
Après cela, ce devrait être une magie d'appeler pydot et de le dessiner.
Le résultat du dessin ci-dessus ressemble à ceci
L'arbre de décision de Weka est difficile à voir, donc quand j'ai essayé de créer un arbre de décision avec Python, c'est devenu comme ça. Créer un arbre de décision lui-même est très simple. C'est facile à voir
・ Aucune condition de branchement (ne peut être émise en raison d'un manque de capacité)
・ Les questionnaires avec 1, 2 ou 3 types de réponses dans un élément ne peuvent pas être triés (oui et non peuvent être réalisés avec [1, -1])
・ Valeur nulle ・ N'accepte pas les chaînes de caractères
Pour l'instant, je pense que Weka est plus facile à utiliser. Dois-je ajouter une option d'argument? .. ..
Recommended Posts