machine-learning - Scikit Learn 从管道内的特征联合中提取特征名称

标签 machine-learning scikit-learn random-forest data-science sklearn-pandas

我使用 SKlearn 的 Pipeline 模型来提取和构造一个统一的特征,然后将其发送到随机森林分类器,而一些特征提取器可以稍后删除或添加,请考虑以下结构:

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]

关于machine-learning - Scikit Learn 从管道内的特征联合中提取特征名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35890397/

相关文章:

math - 模型的预测概率与置信水平相同吗?

python - sklearn 中的 StandardScaler 无法正确拟合,是吗?

python - 随机森林模型拟合

image-processing - Convert_imageset.cpp 指南

python - SciKit-learn - 训练高斯朴素贝叶斯分类器

machine-learning - BERT 的表现比 word2vec 差

python - NumPy 还是字典?

python - 在拟合随机森林分类器时遇到问题

python - 为什么在 scikit-learn 中使用 make_pipeline 时出现 'last step of pipeline' 错误?

r - 使用randomforest()在R中进行分类?