2016-02-09 4 views
3

Я пытаюсь выполнить следующий код:AttributeError: модуль «pydot» не имеет атрибута «graph_from_dot_data» в Spyder

from sklearn.datasets import load_iris 
from sklearn import tree 
import pydot 
clf = tree.DecisionTreeClassifier() 
iris = load_iris() 
clf = clf.fit(iris.data, iris.target) 
from sklearn.externals.six import StringIO 
from pydot import * 
dotfile = StringIO() 
tree.export_graphviz(clf, out_file = dotfile) 
pydot.graph_from_dot_data(dot_data.getvalue()).write_png("dtree2.png") 

и я получаю следующее сообщение об ошибке: AttributeError: модуль «pydot» не имеет атрибута 'graph_from_dot_data'

Я попытался найти решение, но не смог этого сделать. Пожалуйста, помогите мне в этом отношении.

+1

Попробуйте обновить пакет pydot – Arseniy

+0

Арсений, я попытался installe обновленных пакетов, такие как pydotplus и pydot2, но безрезультатно. Не могли бы вы рассказать мне об этом? –

+0

Получить путь к вашему модулю: добавить 'print pydot .__ file__' прямо перед' pydot.graph_from_dot_data' и проверить правильность пути – Arseniy

ответ

4

1) Используйте pydotplus, если вы используете питона 3+

2) Измените последнюю строку pydotplus.graph_from_dot_data (dotfile.getvalue()). Write_png ("dtree2.png") в качестве переменной имя 'dotfile' и не 'dot_data'

PS - переустановить Graphviz после установки pydotplus

Надеется, что это помогает!

+0

Уважаемый Jinesh, я попробую !!! Спасибо Большое. –

2

pydot.graph_from_dot_data() возвращает список, так что попробуйте:

graphs = pydot.graph_from_dot_data(dot_data.getvalue()) 
graphs[0].write_png("dtree2.png")