SciKit中决策树中的Feature_importance向量与特征名称一起学习

时间:2016-10-20 15:55:29

标签: python scikit-learn decision-tree

我正在运行SciKit Learn中的决策树算法,我希望获得Feature_importance向量以及功能名称,以便我可以确定哪些功能在标记过程中占主导地位。你可以帮帮我吗?谢谢。

2 个答案:

答案 0 :(得分:6)

假设您将样本作为pandas.DataFrame的行:

from pandas import DataFrame
features = DataFrame({'f1': (1, 2, 2, 2), 'f2': (1, 1, 1, 1), 'f3': (3, 3, 1, 1)})
labels = ('a', 'a', 'b', 'b')

然后使用树或森林分类器:

from sklearn.tree import DecisionTreeClassifier
classifier = DecisionTreeClassifier()
classifier.fit(features, labels)

然后,重要性应与框架列匹配:

for name, importance in zip(features.columns, classifier.feature_importances_):
    print(name, importance)

# f1 0.0
# f2 0.0
# f3 1.0

答案 1 :(得分:0)

wrwrwr的一个好建议!由于分类器的'feature_importances_'属性中的要素重要性值的顺序与'feature.columns'中的要素名称的顺序匹配,因此可以使用zip()函数。

此外,对功能进行排序,然后选择要显示的前N 个功能也很有帮助。

假设您已创建分类器:

clf = DecisionTreeClassifier(random_state=0).fit(X_train,y_train)

然后您可以按重要性降序打印前5个功能:

for importance, name in sorted(zip(clf.feature_importances_, X_train.columns),reverse=True)[:5]:
    print (name, importance)