如何使 Python 决策树更易于理解?
How to make Python decision tree more understandable?
我有一个数据文件。数据的最后一列有 +1 和 -1 区分变量。我还在单独的文件中有每列的 ID 名称。
例如
1 2 3 4 1
5 6 7 8 1
9 1 2 3 -1
4 5 6 7 -1
8 9 1 2 -1
并且对于每一列,我分别有 Q1、Q2、Q3、Q4、Q5 名称。
我想实现决策树classifier所以我写了下面的代码:
import numpy
from sklearn import tree
print('Reading data from ' + fileName);
data = numpy.loadtxt(fileName);
print('Getting ids from ', idFile)
idArray = numpy.genfromtxt('cleanedID.csv', dtype='str')
print('Adding ids')
print('data dimensions: ', data.shape)
print('idArray dimensions: ', idArray.shape)
data = numpy.append(idArray, data, axis = 0)
y = data[:,-1]
x = data[:, 1:-1]
classifier = tree.DecisionTreeClassifier(max_depth = depth)
classifier = classifier.fit(x, y)
with open('graph.dot', 'w') as file:
tree.export_graphviz(classifier, out_file = file)
file.close()
我使用 graphviz 将 .dot 文件转换为 .png 文件。
问题是决策树看起来像:
我不明白 X[number] 是什么意思。我搜索并发现 value = [5 0] 意味着 class 5 有 0 个对象,class 0 有 5 个对象,但我只有 +1 和 -1 区分变量。无论如何我可以调整这个决策树,以便我可以在决策树图片中看到列名称(Q1、Q2、Q3 ....),以便我理解这意味着什么?
谢谢
Value = [5 0]
表示第一个class有5个成员,第二个class有0个成员。对你来说,class 顺序可能是 [-1 1]
.
关于列名:正如yangjie指出的那样,X[158]
表示第159列(零索引)。规则已经很清楚了:X[168]<=1.5
表示对于给定的行,树根据第 168 列的值以及它与 1.5 的比较来决定是向左还是向右。
您可以使用 feature_names
可选参数添加列名到 export_graphviz
我有一个数据文件。数据的最后一列有 +1 和 -1 区分变量。我还在单独的文件中有每列的 ID 名称。
例如
1 2 3 4 1
5 6 7 8 1
9 1 2 3 -1
4 5 6 7 -1
8 9 1 2 -1
并且对于每一列,我分别有 Q1、Q2、Q3、Q4、Q5 名称。
我想实现决策树classifier所以我写了下面的代码:
import numpy
from sklearn import tree
print('Reading data from ' + fileName);
data = numpy.loadtxt(fileName);
print('Getting ids from ', idFile)
idArray = numpy.genfromtxt('cleanedID.csv', dtype='str')
print('Adding ids')
print('data dimensions: ', data.shape)
print('idArray dimensions: ', idArray.shape)
data = numpy.append(idArray, data, axis = 0)
y = data[:,-1]
x = data[:, 1:-1]
classifier = tree.DecisionTreeClassifier(max_depth = depth)
classifier = classifier.fit(x, y)
with open('graph.dot', 'w') as file:
tree.export_graphviz(classifier, out_file = file)
file.close()
我使用 graphviz 将 .dot 文件转换为 .png 文件。
问题是决策树看起来像:
我不明白 X[number] 是什么意思。我搜索并发现 value = [5 0] 意味着 class 5 有 0 个对象,class 0 有 5 个对象,但我只有 +1 和 -1 区分变量。无论如何我可以调整这个决策树,以便我可以在决策树图片中看到列名称(Q1、Q2、Q3 ....),以便我理解这意味着什么?
谢谢
Value = [5 0]
表示第一个class有5个成员,第二个class有0个成员。对你来说,class 顺序可能是 [-1 1]
.
关于列名:正如yangjie指出的那样,X[158]
表示第159列(零索引)。规则已经很清楚了:X[168]<=1.5
表示对于给定的行,树根据第 168 列的值以及它与 1.5 的比较来决定是向左还是向右。
您可以使用 feature_names
可选参数添加列名到 export_graphviz