Scikit-Learn中决策树中的特征重要性向量及特征名称。

7

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


至少发布您尝试过的内容。另外,sklearn API文档非常清晰。 - MMF
2个回答

7
假设您有一组样本,每个样本都作为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

2

一个好的建议来自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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接