【发布时间】:2016-08-20 03:24:34
【问题描述】:
是否可以在 scikit learn 中计算特征重要性(使用随机森林)何时对特征进行单一编码?
【问题讨论】:
-
是的,根据您用于单热编码的转换器(例如
DictVectorizer),您可以使用feature_names_属性从该转换器访问特征名称。
标签: scikit-learn
是否可以在 scikit learn 中计算特征重要性(使用随机森林)何时对特征进行单一编码?
【问题讨论】:
DictVectorizer),您可以使用feature_names_ 属性从该转换器访问特征名称。
标签: scikit-learn
这是一个如何将特征名称与其重要性结合起来的示例:
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
【讨论】: