【问题标题】:Sklearn AdaBoost with Polynomial SVM predicts all 1s使用多项式 SVM 的 Sklearn AdaBoost 预测全 1
【发布时间】:2020-02-18 20:20:07
【问题描述】:

我正在尝试使用以多项式 SVM 作为基础分类器的 AdaBoost 创建模型。

sn-p代码如下:

base_clf = SVC(kernel='poly', degree=3, class_weight='balanced', gamma='scale', probability=True)
model = AdaBoostClassifier(base_estimator=base_clf, n_estimators=10)
model.fit(X_train, y_train)
y_predict = model.predict(X_test)

我面临的问题是模型总是只预测1

将 AdaBoost 与 SVM 一起用作基分类器是否不正确?请指导。

【问题讨论】:

  • 你有不平衡的课程吗?你是如何拆分训练和测试的
  • @Rubens_Zimbres 有 416 个“1”类和 167 个“0”类。我正在使用以下方法拆分数据:train_test_split(features, target, test_size=0.3, random_state=0)

标签: python machine-learning scikit-learn svm adaboost


【解决方案1】:

将 AdaBoost 与 SVM 一起用作基分类器是否不正确?请指导。

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

Adaboost(和类似的集成方法)是在 20 年前构思出来的,它使用决策树 (DTs) 作为基础分类器(更具体地说,决策树 stumps,即深度仅为 1 的 DTs);如果您没有明确指定 base_classifier 参数,那么今天仍然有充分的理由假定它的值为 DecisionTreeClassifier(max_depth=1),即决策树桩。

DT 适合这种集成,因为它们本质上是不稳定分类器,而 SVM 则不是这样,因此后者在用作提升算法的基分类器时不会提供任何东西。

【讨论】:

    猜你喜欢
    • 2014-04-03
    • 2013-10-25
    • 2021-12-03
    • 2014-04-28
    • 2020-01-09
    • 2019-10-19
    • 2020-07-14
    • 2019-07-06
    • 2019-02-12
    相关资源
    最近更新 更多