我正在使用SKlearn的管道模型来提取和构造一个统一的特征,然后将其发送到随机森林分类器,而一些特征提取器可以稍后删除或添加,请考虑以下结构:
model = Pipeline([
('feature_extract',
FeatureUnion([
('feature A', extracorA()),
('feature B', ExtractorB()),
('feature C', FeatureUnion([
('c1', C1Extractor())
('c2', C2Extractor())]))
)]),
('random_forest', RandomForestRegressor(...)))])
我想通过检查
feature_importances_
RandomForstRegressor 的属性
我设法使用以下方法获取列表:
model._final_estimator.feature_importances_
现在,我想在feature_importances_索引中的列号与管道中的功能名称/步骤之间动态链接。
是否有在特征联合中保存/检索功能名称的首选方法?您将如何解决这个问题?
若要使所有内容保持动态形式,可以使用以下函数作为单独类的转换实现,并使类的对象成为管道的一部分。您甚至可以更改评分参数。我认为网格搜索作为管道的一部分是您正在寻找的......
def best_config(model, parameters, train_instances, judgements):
clf = GridSearchCV(model, parameters, cv=5,
scoring="accuracy", verbose=5, n_jobs=4)
clf.fit(train_instances, judgements)
best_estimator = clf.best_estimator_
return [str(clf.best_params_), clf.best_score_,
best_estimator]