首页 > 解决方案 > 如何从 bagging 中获得集合的基本模型分数

问题描述

我创建了一个Bagging Ensemble Model. 模型如下

def get_models():
    models = dict()
    n_trees = [10, 50, 100, 500, 500, 1000, 5000]
    for n in n_trees:
        models[str(n)] = BaggingRegressor(base_estimator=DecisionTreeRegressor(), n_estimators=n)
        return models

我想获得每个基本模型的分数和最终集成模型的分数。所以,我使用(with base_estimator_)下面的代码来访问基本模型

因此,在拟合主模型后,我使用此代码来获取基本模型的分数

        for learner in regressor.base_estimator_:
            base_dfs.append(
                evaluate_base_learner(
                    learner, X_train[train_index], X_test, y_train[train_index], y_test, k, method, learner_name = type(model).__name__,
                )
            )

但我收到一个错误 TypeError: 'DecisionTreeRegressor' object is not iterable。你能告诉我为什么我会收到这个错误,我该如何解决这个问题?

标签: pythonpython-3.xscikit-learnensemble-learning

解决方案


如果你想访问base模型,你应该使用

for learner in regressor.estimators_:

更多信息

此外,如果您想根据您的代码运行我所理解的更多模型,您需要更改return代码(不在loop.


推荐阅读