feature_importances_的数量与Scikit学习的DecisionTreeClassifier中的功能不匹配

时间:2015-01-13 20:32:35

标签: python decision-tree

我使用以下Python代码将决策树安装到具有20个输入和1个分类输出的数据集中(wordsDatum只是一个包含第0到19列输入和第20列输出的数组

clsfr=tree.DecisionTreeClassifier(max_depth=2,min_samples_leaf=50)
clsfr=clsfr.fit(wordsDatum[:,0:19],wordsDatum[:,20])
for items in clsfr.feature_importances_:
    print items

当我打印特征重要性时,我只得到19个值 - 考虑到我有20个特征,这很奇怪。任何想法可能会在这里发生什么?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

这是由于如何在python中定义列表。您可以在here找到一些很好的见解。

但总的来说,如果你定义一个这样的列表:

my_list = [0, 1, 2, 3, 4, 5]

你打电话给my_list[0:5],它会给你:

[0, 1, 2, 3, 4]

因此,如果您将代码的第二行更改为:

clsfr=clsfr.fit(wordsDatum[:,0:20],wordsDatum[:,20])

它会做你所期望的。它将包括前20个功能。

答案 1 :(得分:0)

感谢您的回复!是的,python似乎有这个怪癖(?)包括下限但不包括范围的上限