Traçage de l'arbre de décision, graphvizm pydotplus
Je suis en suivant le tutoriel pour arbre de décision sur scikit de la documentation.
J'ai pydotplus 2.0.2
mais il me dit qu'il n'a pas write
méthode de l'erreur ci-dessous. J'ai eu du mal pendant un certain temps maintenant, toutes les idées, s'il vous plaît? Merci beaucoup!
from sklearn import tree
from sklearn.datasets import load_iris
iris = load_iris()
clf = tree.DecisionTreeClassifier()
clf = clf.fit(iris.data, iris.target)
from IPython.display import Image
dot_data = tree.export_graphviz(clf, out_file=None)
import pydotplus
graph = pydotplus.graphviz.graph_from_dot_data(dot_data)
Image(graph.create_png())
et mon erreur est
/Users/air/anaconda/bin/python /Users/air/PycharmProjects/kiwi/hemr.py
Traceback (most recent call last):
File "/Users/air/PycharmProjects/kiwi/hemr.py", line 10, in <module>
dot_data = tree.export_graphviz(clf, out_file=None)
File "/Users/air/anaconda/lib/python2.7/site-packages/sklearn/tree/export.py", line 375, in export_graphviz
out_file.write('digraph Tree {\n')
AttributeError: 'NoneType' object has no attribute 'write'
Process finished with exit code 1
----- Mise à JOUR -----
À l'aide de la fixer avec out_file
, il jette une autre erreur:
Traceback (most recent call last):
File "/Users/air/PycharmProjects/kiwi/hemr.py", line 13, in <module>
graph = pydotplus.graphviz.graph_from_dot_data(dot_data)
File "/Users/air/anaconda/lib/python2.7/site-packages/pydotplus/graphviz.py", line 302, in graph_from_dot_data
return parser.parse_dot_data(data)
File "/Users/air/anaconda/lib/python2.7/site-packages/pydotplus/parser.py", line 548, in parse_dot_data
if data.startswith(codecs.BOM_UTF8):
AttributeError: 'NoneType' object has no attribute 'startswith'
---- Mise à JOUR 2 -----
Aussi, se ma propre réponse ci-dessous qui résout un autre problème
OriginalL'auteur Jan Sila | 2016-10-10
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que vous êtes le paramètre
out_file
àNone
.Si vous regardez la la documentation, si vous le réglez à
None
il renvoie lastring
fichier directement et de ne pas créer un fichier. Et bien sûr, unstring
ne dispose pas d'unwrite
méthode.Par conséquent, procédez comme suit :
Pourriez-vous mettre à jour dans votre question ? c'est plus lisible !
bien sûr, merci beaucoup pour votre effort!
Essayez ceci dans votre importation :
from pydotplus import graphviz
et puis : 'graph = graphviz.graph_from_dot_data(dot_data)'graph_from_dot_data()
ne fonctionne toujours pas pour moi. J'ai eu à utilisergraph_from_dot_file()
plutôt que @Vadym Pasko est proposée ci-dessousOriginalL'auteur MMF
Méthode
graph_from_dot_data()
n'a pas fonctionné pour moi, même après avoir spécifié le chemin d'accès approprié pourout_file
.Au lieu d'essayer en utilisant
graph_from_dot_file
méthode:graphviz
OriginalL'auteur Vadym Pasko
J'ai rencontré la même erreur ce matin. J'utilise python 3.x et voici comment je résoudre le problème.
si vous utilisez python 2.x, je crois que vous avez besoin de changer "importer io":
et,
Espère que cela aide.
OriginalL'auteur zongyan
Aussi un autre problème a été la
backend
paramètres de mon Graphviz!! Il est résolu bien ici. vous avez juste besoin de recherche qu'fichier de paramètres et de modifier en arrière-plan, ou dans le codempl.use("TkAgg")
comme l'a suggéré il y a dans les commentaires. Après je ne suis d'erreur quepydotplot
ne pouvais pas trouver monGraphviz
exécutable, donc j'ai réinstallé Graphviz via homebrew:brew install graphviz
qui a résolu le problème et je peux faire des parcelles maintenant!!Lol tu ne peux pas upvote, mais je dois l'ai accidentellement l'accepter au lieu de la vôtre 😀 je vais le remettre.
OriginalL'auteur Jan Sila
Ce qui m'a vraiment aidé à résoudre le problème était le suivant:-
J'ai exécuté le code à partir de la même utilisateur à travers lequel graphviz a été installé. Si l'exécution de tout autre utilisateur donner votre erreur
OriginalL'auteur K.S.