SciKit Learn 中决策树中的 Feature_importance 向量以及特征名称
Posted
技术标签:
【中文标题】SciKit Learn 中决策树中的 Feature_importance 向量以及特征名称【英文标题】:Feature_importance vector in Decision Trees in SciKit Learn along with feature names 【发布时间】:2017-03-02 17:35:29 【问题描述】:我正在运行 SciKit Learn 中的决策树算法,我想获取 Feature_importance 向量以及特征名称,以便确定哪些特征在标记过程中占主导地位。你可以帮帮我吗?谢谢。
【问题讨论】:
至少发布您尝试过的内容。更何况sklearn
API文档真的很清楚
【参考方案1】:
假设您将样本作为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)
【讨论】:
以上是关于SciKit Learn 中决策树中的 Feature_importance 向量以及特征名称的主要内容,如果未能解决你的问题,请参考以下文章
SciKit Learn 中决策树中的 Feature_importance 向量以及特征名称