AttributeError: 'list' object has no attribute 'create_png'
AttributeError: 'list' object has no attribute 'create_png'
这将数据分类为决策树。决策树已创建,但我无法查看决策树。
import numpy as np
from sklearn import linear_model, datasets, tree
import matplotlib.pyplot as plt
iris = datasets.load_iris()
f = open('decision_tree_data.txt')
x_train = []
y_train = []
for line in f:
line = np.asarray(line.split(),dtype = np.float32)
x_train.append(line[:-1])
y_train.append(line[:-1])
x_train = np.asmatrix(x_train)
y_train = np.asmatrix(y_train)
model = tree.DecisionTreeClassifier()
model.fit(x_train,y_train)
from sklearn.externals.six import StringIO
import pydot
from IPython.display import Image
dot_data = StringIO()
tree.export_graphviz(model, out_file=dot_data,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
Image(graph.create_png())
函数pydot.graph_from_dot_data
returns a list
in pydot >= 1.2.0
(对比pydot
的早期版本)。
原因是为了使输出均质化,过去如果返回两个图是list
,如果返回单个图则为图。这种分支是用户代码中常见的错误来源(简单胜于复杂 [PEP 20])。
更改适用于调用函数 dot_parser.parse_dot_data
的所有函数,现在 returns a list
in all cases.
要解决该错误,您需要解压缩您期望的单个图:
graph, = pydot.graph_from_dot_data(dot_data.getvalue())
此语句还断言返回单个图。因此,如果此假设不成立,并且返回了更多图表,则此解包将捕获它。相比之下,graph = (...)[0]
不会。
相关 pydot
个问题:
这将数据分类为决策树。决策树已创建,但我无法查看决策树。
import numpy as np
from sklearn import linear_model, datasets, tree
import matplotlib.pyplot as plt
iris = datasets.load_iris()
f = open('decision_tree_data.txt')
x_train = []
y_train = []
for line in f:
line = np.asarray(line.split(),dtype = np.float32)
x_train.append(line[:-1])
y_train.append(line[:-1])
x_train = np.asmatrix(x_train)
y_train = np.asmatrix(y_train)
model = tree.DecisionTreeClassifier()
model.fit(x_train,y_train)
from sklearn.externals.six import StringIO
import pydot
from IPython.display import Image
dot_data = StringIO()
tree.export_graphviz(model, out_file=dot_data,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
Image(graph.create_png())
函数pydot.graph_from_dot_data
returns a list
in pydot >= 1.2.0
(对比pydot
的早期版本)。
原因是为了使输出均质化,过去如果返回两个图是list
,如果返回单个图则为图。这种分支是用户代码中常见的错误来源(简单胜于复杂 [PEP 20])。
更改适用于调用函数 dot_parser.parse_dot_data
的所有函数,现在 returns a list
in all cases.
要解决该错误,您需要解压缩您期望的单个图:
graph, = pydot.graph_from_dot_data(dot_data.getvalue())
此语句还断言返回单个图。因此,如果此假设不成立,并且返回了更多图表,则此解包将捕获它。相比之下,graph = (...)[0]
不会。
相关 pydot
个问题: