标签: ensemble-learning

mlr - 合奏模型

mlr包非常棒,创建ModelMultiplexer的想法也很有帮助.但ModelMultiplexer 从所使用的模型中" 选择 "了1个单一模型.

是否有任何支持或计划支持创建单个模型的Bagged或Boosted Ensemble?

bls = list(
  makeLearner("classif.ksvm"),
  makeLearner("classif.randomForest")
)
lrn = makeModelMultiplexer(bls)
ps = makeModelMultiplexerParamSet(lrn,
  makeNumericParam("sigma", lower = -10, upper = 10, trafo = function(x) 2^x),
  makeIntegerParam("ntree", lower = 1L, upper = 500L))
> print(res)
Tune result:
**Op. pars: selected.learner=classif.randomForest; classif.randomForest.ntree=197
mmce.test.mean=0.0333**
Run Code Online (Sandbox Code Playgroud)

r ensemble-learning mlr

4
推荐指数
1
解决办法
1852
查看次数

两个分类器之间的投票如何在sklearn中起作用?

对于分类任务,我使用投票分类器来集成逻辑回归和SVM,投票参数设置为soft.结果明显优于每个单独的模型.我不确定我是否理解它是如何工作的.模型如何才能在两个模型之间找到多数投票?

python classification machine-learning scikit-learn ensemble-learning

4
推荐指数
1
解决办法
3259
查看次数

如何在 tidymodels 堆栈中启用并行化::control_stack_grid()

我正在尝试使用tidymodels stacks包来执行集成建模。按照他们的文章中提供的说明,我能够成功地重现该示例。

\n

但是,当我在代码的“knn_res”部分的超参数调整期间添加并行化时:

\n
library(doParallel)\nlibrary(parallel)\nset.seed(2020)\ncls <- makePSOCKcluster(parallelly::availableCores())\nregisterDoParallel(cls)\nknn_res <- \n  tune_grid(\n    knn_wflow,\n    resamples = folds,\n    metrics = metric,\n    grid = 4,\n    control = ctrl_grid\n  )\nstopCluster(cls)\n\n
Run Code Online (Sandbox Code Playgroud)\n

我在运行代码的“tree_frogs_model_st”部分时遇到错误:

\n
tree_frogs_model_st <-\n  tree_frogs_data_st %>%\n  blend_predictions()\n
Run Code Online (Sandbox Code Playgroud)\n

错误消息指出:

\n
Error in summary.connection(connection) : invalid connection\n
Run Code Online (Sandbox Code Playgroud)\n

我相信这个问题可能与stacks::control_stack_grid()函数有关,但我不确定如何解决它。请指教。

\n
\n

更新(完整代表)

\n

为了简洁起见,我排除了线性模型。

\n
library(doParallel)\nlibrary(parallel)\nset.seed(2020)\ncls <- makePSOCKcluster(parallelly::availableCores())\nregisterDoParallel(cls)\nknn_res <- \n  tune_grid(\n    knn_wflow,\n    resamples = folds,\n    metrics = metric,\n    grid = 4,\n    control = ctrl_grid\n  )\nstopCluster(cls)\n\n
Run Code Online (Sandbox Code Playgroud)\n

由reprex 包于 2023 …

r ensemble-learning tidymodels r-parsnip

4
推荐指数
1
解决办法
302
查看次数

matplotlib 不支持生成器作为输入

我正在此站点https://github.com/vsmolyakov/experiments_with_python/blob/master/chp01/ensemble_methods.ipynb上运行 Python 2 笔记本, 以使用 python 练习集成方法,并在运行这部分代码时出现错误Python 3:

plt.figure()
(_, caps, _) = plt.errorbar(num_est, bg_clf_cv_mean, yerr=bg_clf_cv_std, c='blue', fmt='-o', capsize=5)
for cap in caps:
    cap.set_markeredgewidth(1)                                                                                                                                
plt.ylabel('Accuracy'); plt.xlabel('Ensemble Size'); plt.title('Bagging Tree Ensemble');
plt.show()
Run Code Online (Sandbox Code Playgroud)

错误是“matplotlib不支持生成器作为输入”解决方案是什么?

python generator matplotlib python-3.x ensemble-learning

3
推荐指数
1
解决办法
6276
查看次数

scikit-learn 的 VotingClassifier 中使用的分类器是什么?

我查看了 scikit-learn 的文档,但我不清楚在 VotingClassifier 下使用了什么样的分类方法?它是逻辑回归、SVM 还是某种树方法?

我对改变引擎盖下使用的分类器方法的方法很感兴趣。如果 Scikit-learn 不提供这样的选项,是否有一个可以与提供此类功能的 scikit-learn 轻松集成的 python 包?

编辑:

我的意思是用于分类方法第二级模型。我非常清楚第一级分类器可以是 scikit-learn 支持的任何类型的分类器。

第二级分类器使用第一级分类器的预测作为输入。所以我的问题是 - 这个二级分类器使用什么方法?是逻辑回归吗?或者是其他东西?我可以改变它吗?

python-3.x scikit-learn ensemble-learning

3
推荐指数
1
解决办法
614
查看次数

为什么SAMME.R AdaBoost算法中的estimator_weight设置为1

我是AdaBoost算法的新手.在sklearn中, SAMME算法的_boost_discrete()分类器权重返回为" estimator_weight "

def _boost_discrete(self, iboost, X, y, sample_weight):
    .......

    return sample_weight, estimator_weight, estimator_error
Run Code Online (Sandbox Code Playgroud)

但是,对于SAMME.R算法,"_ boost_real()" 返回 "1"而不是返回估计量权重.

def _boost_real(self, iboost, X, y, sample_weight):
    .......

    return sample_weight, 1., estimator_error
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么SAMME.R算法将estimator_weight返回为'1'.我正在关注ref [1].请帮我理解算法.提前致谢.

参考:[1] J. Zhu,H.Zou,S.Rosset,T.Hastie,"Multi-class AdaBoost",2009.

machine-learning adaboost scikit-learn ensemble-learning

2
推荐指数
1
解决办法
2514
查看次数

在 Spark 中堆叠 ML 算法

是否有 Spark api 可以在 Spark 中构建堆叠集成,或者应该从头开始构建它们?我还没有\xe2\x80\x99t 在网上找到任何有关此主题的资源

\n

python apache-spark ensemble-learning pyspark apache-spark-mllib

2
推荐指数
1
解决办法
1802
查看次数

h2o ensemble 抛出错误:“基础模型不保留交叉验证预测”

我正在尝试根据许多 GLM、GBM 和深度学习模型在 H2O 中创建一个集成模型。

这是我到目前为止所做的。

导入相关库:

import h2o
from h2o.estimators.glm import H2OGeneralizedLinearEstimator
from h2o.estimators.gbm import H2OGradientBoostingEstimator
from h2o.estimators.deeplearning import H2ODeepLearningEstimator
from h2o.estimators.stackedensemble import H2OStackedEnsembleEstimator
from h2o.grid.grid_search import H2OGridSearch
Run Code Online (Sandbox Code Playgroud)

数据可以从这里下载。进口:

airlines = h2o.import_file(path = "/Users/alexwoolford/h2o/allyears2k.csv", destination_frame = "airlines.hex")
Run Code Online (Sandbox Code Playgroud)

分为训练/测试集:

airlines_80,airlines_20 = airlines.split_frame(ratios=[.8], destination_frames=["airlines_80.hex", "airlines_20.hex"])
Run Code Online (Sandbox Code Playgroud)

定义变量(将 y 预测为 x 中所有列的函数):

x= airlines.columns
y= "ArrDelay"
x.remove(y)
Run Code Online (Sandbox Code Playgroud)

设置公共属性:

folds=5
assignment_type="Modulo"
search_criteria={'strategy': 'RandomDiscrete', 'max_models': 5, 'seed': 1}
Run Code Online (Sandbox Code Playgroud)

使用H2O的网格搜索来创建各种模型:

# GLM
glm_params = {"alpha": [0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, …
Run Code Online (Sandbox Code Playgroud)

python ensemble-learning h2o

2
推荐指数
1
解决办法
1078
查看次数

AdaBoostClassifier 和“SAMME.R”算法

需要一段时间才能回答实际问题,所以请耐心等待。AdaBoost 文档指出,它“是一个元估计器,首先在原始数据集上拟合分类器,然后在同一数据集上拟合分类器的其他副本,但会调整错误分类实例的权重”。为此,必需的参数之一是base_estimator。为了与base_estimator一起使用AdaBoostClassifer,“需要支持样本加权”。

\n\n

所以我的第一个问题是 - 哪些分类器为样本加权提供支持?我做了一些研究,幸运的是,比我聪明的人找到了答案。稍微更新一下,它的工作原理如下:通过运行

\n\n
from sklearn.utils.testing import all_estimators \n\nprint(all_estimators(type_filter=\'classifier\'))\n
Run Code Online (Sandbox Code Playgroud)\n\n

您将获得所有分类器的列表(结果有 31 个!)。然后,如果你跑

\n\n
import inspect\n\nfor name, clf in all_estimators(type_filter=\'classifier\'):\n    if \'sample_weight\' in inspect.getfullargspec(clf().fit)[0]:\n        print(name)\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以获得为样本加权提供支持的所有分类器的列表(其中 21 个,出于好奇)。

\n\n

到目前为止,一切都很好。但现在我们必须处理另一个 AdaBoostClassifer参数,即algorithm。您有两个选择:{\xe2\x80\x98SAMME\xe2\x80\x99, \xe2\x80\x98SAMME.R\xe2\x80\x99}, optional (default=\xe2\x80\x99SAMME.R\xe2\x80\x99)。我们被告知“使用 SAMME.R 真实提升算法 base_estimator必须支持类概率的计算”。这就是我陷入困境的地方。在线搜索,我只能找到两个与 \xe2\x80\x98SAMME.R\xe2\x80\x99 一起使用的分类器作为algorithm: DecisionTreeClassifier(这是默认值)和 的参数RandomForestClassifier

\n\n

那么问题来了 - 21 个兼容的其他分类器中还有哪些AdaBoostClassifer为类别概率的计算提供支持?

\n\n

谢谢。

\n

adaboost scikit-learn ensemble-learning

2
推荐指数
1
解决办法
2440
查看次数