pydotplus not machine learning found executables decision python machine-learning scikit-learn graphviz pydot

not - plot decision tree python



graph.write_pdf("iris.pdf") AttributeError: el objeto ''list'' no tiene ningĂșn atributo ''write_pdf'' (8)

@Alex Sokolov, para mi caso en la ventana, descargué e instalé / descomprimí lo siguiente en una carpeta y configuré la RUTA en las variables de entorno de Windows . volver a ejecutar el código py funciona para mí. la esperanza es útil para ti.

Mi código es seguir la clase de aprendizaje automático de Google. Los dos códigos son los mismos. No sé por qué muestra el error. Puede ser que el tipo de variable sea el error. Pero el código de Google es el mismo para mí. ¿Quién ha tenido este ¿problema?

Esto es un error

[0 1 2] [0 1 2] Traceback (most recent call last): File "/media/joyce/oreo/python/machine_learn/VisualizingADecisionTree.py", line 34, in <module> graph.write_pdf("iris.pdf") AttributeError: ''list'' object has no attribute ''write_pdf'' [Finished in 0.4s with exit code 1] [shell_cmd: python -u "/media/joyce/oreo/python/machine_learn/VisualizingADecisionTree.py"] [dir: /media/joyce/oreo/python/machine_learn] [path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

Esto es código

import numpy as np from sklearn.datasets import load_iris from sklearn import tree iris = load_iris() test_idx = [0, 50, 100] # training data train_target = np.delete(iris.target, test_idx) train_data = np.delete(iris.data, test_idx, axis=0) # testing data test_target = iris.target[test_idx] test_data = iris.data[test_idx] clf = tree.DecisionTreeClassifier() clf.fit(train_data, train_target) print test_target print clf.predict(test_data) # viz code from sklearn.externals.six import StringIO import pydot dot_data = StringIO() tree.export_graphviz(clf, out_file=dot_data, feature_names=iris.feature_names, class_names=iris.target_names, filled=True, rounded=True, impurity=False) graph = pydot.graph_from_dot_data(dot_data.getvalue()) graph.write_pdf("iris.pdf")


Creo que estás usando la versión más nueva de Python. Por favor, intente con pydotplus.

import pydotplus ... graph = pydotplus.graph_from_dot_data(dot_data.getvalue()) graph.write_pdf("iris.pdf")

Esto debería hacerlo.


Espero que esto ayude, estaba teniendo un problema similar. Decidí no usar pydot / pydotplus, sino graphviz . ¡Modifiqué (apenas) el código y funciona de maravilla! :)

# 2. Train classifier # Testing Data # Examples used to "test" the classifier''s accuracy # Not part of the training data import numpy as np from sklearn.datasets import load_iris from sklearn import tree iris = load_iris() test_idx = [0, 50, 100] # Grabs one example of each flower for testing data (in the data set it so happens to be that # each flower begins at 0, 50, and 100 # training data train_target = np.delete(iris.target, test_idx) # Delete all but 3 for training target data train_data = np.delete(iris.data, test_idx, axis=0) # Delete all but 3 for training data # testing data test_target = iris.target[test_idx] # Get testing target data test_data = iris.data[test_idx] # Get testing data # create decision tree classifier and train in it on the testing data clf = tree.DecisionTreeClassifier() clf.fit(train_data, train_target) # Predict label for new flower print(test_target) print(clf.predict(test_data)) # Visualize the tree from sklearn.externals.six import StringIO import graphviz dot_data = StringIO() tree.export_graphviz(clf, out_file=dot_data, feature_names=iris.feature_names, class_names=iris.target_names, filled=True, rounded=True, impurity=False) graph = graphviz.Source(dot_data.getvalue()) graph.render("iris.pdf", view=True)


Instalo scikit-learn a través de conda y todo sobre no funciona. En primer lugar, tengo que instalar libtool

brew install libtool --universal

Luego sigo esta guía sklearn Luego cambio el archivo python a este código

clf = clf.fit(train_data, train_target) tree.export_graphviz(clf,out_file=''tree.dot'')

Finalmente convierta a png en terminal

dot -Tpng tree.dot -o tree.png


Intenté las respuestas anteriores y todavía obtuve un error al ejecutar el script. Por lo tanto, acabo de utilizar pydotplus

import pydotplus

e instala el " graphviz " usando:

sudo apt-get install graphviz

Luego funcionó para mí, y agregué

graph = pydotplus.graph_from_dot_data(dot_data.getvalue()) graph.write_pdf("iris.pdf")

Gracias a los contribuidores anteriores.


Tenía exactamente el mismo problema. Resultó que no había instalado graphviz. Una vez que lo hice, comenzó a funcionar.


pydot.graph_from_dot_data() devuelve una lista, así que intente:

graph = pydot.graph_from_dot_data(dot_data.getvalue()) graph[0].write_pdf("iris.pdf")


import pydotplus ... graph = pydotplus.graph_from_dot_data(dot_data.getvalue()) graph.write_pdf("iris.pdf")

Tengo Python 3.6.0 | Anaconda 4.3.1 y obtengo un error:

Archivo "C: / Anaconda / lib / site-packages / pydotplus / graphviz.py", línea 1960, en create ''GraphViz /' s executables not found '')

InvocationException: los ejecutables de GraphViz no encontrados