如何使Python决策树更容易理解?

时间:2015-08-03 11:43:21

标签: python tree scikit-learn data-analysis

我有一个数据文件。数据的最后一列有+1和-1区别变量。我还在一个单独的文件中有每列的id名称。

e.g。

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名称。

我想实现决策树分类器,所以我编写了以下代码:

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文件。

问题是决策树看起来像: enter image description here

我没有得到X [数字]的含义。我搜索并发现value = [5 0]表示第5类有0个对象,0类有5个对象,但我只有+1和-1区别变量。无论如何我可以调整这个决策树,这样我就可以在决策树图片中看到列名(Q1,Q2,Q3 ....),这样我就能理解这意味着什么?

由于

1 个答案:

答案 0 :(得分:2)

Value = [5 0]表示第一个类有5个成员,第二个类有0个成员。对你来说,班级顺序可能是[-1 1]

至于列名:正如杨杰所指出的,X[158]表示第159列(零索引)。该规则已经非常明确:X[168]<=1.5表示对于给定的行,树根据第168列的值以及它与1.5的比较来决定是向左还是向右。

您可以使用feature_names

的{{1}}可选参数添加列名