使用SVM作为基分类器的AdaBoost执行时间

我刚刚创建了一个AdaBoost分类器,使用以下参数,

1.n_estimators = 50

2.base_estimator = svc (支持向量分类器)

3.learning_rate = 1

这是我的代码:

from sklearn.ensemble import AdaBoostClassifierfrom sklearn.svm import SVCsvc = SVC(kernel = 'linear',probability = True)ABC = AdaBoostClassifier(n_estimators = 50, base_estimator = svc, learning_rate = 1)ABC.fit(X,Y)

数据集有18个独立变量和1个分类依赖变量,数据集有10480个数据点

每次运行这个程序时,都需要很长时间,但没有任何结果。

有没有办法检查执行时间?或者有什么更好的方法来做这件事?


回答:

在实践中,我们从不使用SVM作为AdaBoost的基分类器。

AdaBoost(以及类似的集成方法)最初是使用决策树作为基分类器设计的(更具体地说,是决策树桩,即深度仅为1的决策树);这也是为什么直到今天,如果你不明确指定base_classifier参数,它会默认使用DecisionTreeClassifier(max_depth=1)。决策树适合这种集成,因为它们本质上是不稳定的分类器,而SVM则不是,因此后者用作基分类器时预计不会带来太多好处。

此外,SVM在计算上比决策树(更不用说决策树桩)要昂贵得多,这就是你观察到的处理时间长的原因。

除非你有非常充分的理由坚持使用SVM作为基分类器(我非常怀疑你有这样的理由),否则请删除base_estimator = svc以恢复到默认设置,这样你很可能就没问题了。

Related Posts

密集层二元分类不能设置为2

我刚开始接触Keras和TensorFlow。我在尝试…

如何使用Scikit-learn创建包含数值和1-hot编码类别特征的训练数据集?

我有一个训练数据集,其中包含连续值和类别值。我已经使用…

### K均值聚类和寻找最接近中心点的演员

我正在尝试使用K均值聚类方法对演员进行聚类,基于以下列…

如何在 mlr3proba 的嵌套交叉验证中转换 ‘2 级 ParamUty’ 类?

对于生存分析,我使用了 R 语言的 mlr3proba…

您期望线性分类器在二维主成分空间中分离两个类别吗?

我总共有183个特征,并且已经应用了PCA来降低维度,…

Python – Tensorflow 关于卷积神经网络的建议

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注