【问题标题】:Computing Feature Importance with OneHotEncoded Features使用 OneHotEncoded 特征计算特征重要性
【发布时间】:2016-08-20 03:24:34
【问题描述】:

是否可以在 scikit learn 中计算特征重要性(使用随机森林)何时对特征进行单一编码?

【问题讨论】:

  • 是的,根据您用于单热编码的转换器(例如DictVectorizer),您可以使用feature_names_ 属性从该转换器访问特征名称。

标签: scikit-learn


【解决方案1】:

这是一个如何将特征名称与其重要性结合起来的示例:

from sklearn.feature_extraction import DictVectorizer
from sklearn.preprocessing import FunctionTransformer
from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import make_pipeline


# some example data
X = pd.DataFrame({'feature': ['value1', 'value2', 'value2', 'value1', 'value2']})
y = [1, 0, 0, 1, 1]

# translate rows to dicts
def row_to_dict(X, y=None):
    return X.apply(dict, axis=1)

# define prediction model
ft = FunctionTransformer(row_to_dict, validate=False)
dv = DictVectorizer()
rf = RandomForestClassifier()

# glue steps together
model = make_pipeline(ft, dv, rf)

# train
model.fit(X, y)

# get feature importances
feature_importances = zip(dv.feature_names_, rf.feature_importances_)

# have a look
print feature_importances

【讨论】:

  • 这太棒了!这将返回每个标签的每个特征的特征重要性,我认为这是不可能的!谢谢你:)
  • 是否有一种简单的方法可以获取每个功能的整体功能重要性? (不是每个标签)
  • 是的,您可以聚合它们,例如平均值、中位数等
猜你喜欢
  • 2021-09-07
  • 1970-01-01
  • 2017-10-25
  • 2017-11-14
  • 1970-01-01
  • 2016-11-26
  • 2018-12-14
  • 2021-12-23
相关资源
最近更新 更多