我从"scikit learn/decision tree/export graphviz"中得到的决策树类名不正确。代码如下:
import matplotlib.pyplot as plt
import matplotlib.image as img
import pydot
from sklearn import tree
digital_table = [[0, 0], [0, 1], [1, 0], [1, 1]]
digital_label = ['zero', 'one', 'two', 'three']
digital_name = ['idx-1', 'idx-2']
digital_tree = tree.DecisionTreeClassifier()
digital_tree.fit(digital_table, digital_label)
with open("digital.dot", 'w') as f:
f = tree.export_graphviz(digital_tree,
feature_names=digital_name,
class_names=digital_label,
filled=True, rounded=True,
out_file=f)
(graph,) = pydot.graph_from_dot_file("digital.dot")
graph.write_png("digital.png")
plt.imshow(img.imread('digital.png'))
plt.show()
输出如下:
![决策树](https://istack.dev59.com/JQpzN.webp)
['zero', 'one', 'two', 'three']
进行训练的。函数不知道哪个应该被称为零,哪个应该被称为一。因此,它最终按字母顺序使用它们,one
变成了 0,three
变成了 2,以此类推。处理这个问题的最佳方法是将标签转换为整数类,如[0, 1, 2, 3]
。 - betelgeuse