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