- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在做一个文本分类任务。现在我想使用 ensemble.AdaBoostClassifier
和 LinearSVC
作为 base_estimator
。但是,当我尝试运行代码时
clf = AdaBoostClassifier(svm.LinearSVC(),n_estimators=50, learning_rate=1.0, algorithm='SAMME.R')
clf.fit(X, y)
发生错误。 TypeError:AdaBoostClassifier with algorithm='SAMME.R' 要求弱学习器支持使用 predict_proba 方法计算类别概率
第一个问题是 svm.LinearSVC()
不能计算类别概率吗?如何让它计算概率?
然后我更改参数 algorithm
并再次运行代码。
clf = AdaBoostClassifier(svm.LinearSVC(),n_estimators=50, learning_rate=1.0, algorithm='SAMME')
clf.fit(X, y)
这次 TypeError: fit() got an unexpected keyword argument 'sample_weight'
发生了。正如AdaBoostClassifier中所说, 样本权重。如果为 None,则样本权重初始化为 1/n_samples。
即使我将整数分配给 n_samples
,也会发生错误。
第二个问题是 n_samples
是什么意思?如何解决这个问题呢?
希望有人能帮助我。
根据@jme 的评论,然而,在尝试之后
clf = AdaBoostClassifier(svm.SVC(kernel='linear',probability=True),n_estimators=10, learning_rate=1.0, algorithm='SAMME.R')
clf.fit(X, y)
程序无法获取结果,服务器上使用的内存保持不变。
第三个问题是如何让 AdaBoostClassifier
与 SVC
一起作为 base_estimator 工作?
最佳答案
正确答案取决于您要查找的内容。 LinearSVC 无法预测类别概率(AdaBoostClassifier 使用的默认算法需要)并且不支持 sample_weight。
您应该知道,支持向量机不会名义上预测类别概率。它们是使用 Platt 缩放(或 Platt 缩放在多类情况下的扩展)计算的,这是一种存在已知问题的技术。如果您需要较少的“人工”类别概率,则 SVM 可能不是合适的选择。
话虽如此,对于您的问题,我相信最令人满意的答案是 Graham 给出的答案。也就是说,
from sklearn.svm import SVC
from sklearn.ensemble import AdaBoostClassifier
clf = AdaBoostClassifier(SVC(probability=True, kernel='linear'), ...)
您还有其他选择。您可以使用带有铰链损失函数的 SGDClassifier 并将 AdaBoostClassifier 设置为使用 SAMME 算法(不需要 predict_proba 函数,但需要支持 sample_weight):
from sklearn.linear_model import SGDClassifier
clf = AdaBoostClassifier(SGDClassifier(loss='hinge'), algorithm='SAMME', ...)
如果您想使用为 AdaBoostClassifier 提供的默认算法,也许最好的答案是使用对类别概率具有 native 支持的分类器,例如 Logistic 回归。您可以使用 scikit.linear_model.LogisticRegression 或使用带有对数损失函数的 SGDClassifier 来执行此操作,如 Kris 提供的代码中所用。
希望对您有所帮助,如果您对什么是 Platt 缩放感到好奇,check out the original paper by John Platt here .
关于python - sklearn.ensemble.AdaBoostClassifier 不能接受 SVM 作为 base_estimator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27107205/
假设我有一个名为“Tlr6”的基因(见下图),我想知道如何在 R 中检索染色体上该基因的起始值和终止值?例如图中,起始值为64952031,结束值为64960097。 图片网址为here 。这里的基因
假设我有一个名为“Tlr6”的基因(见下图),我想知道如何在 R 中检索染色体上该基因的起始值和终止值?例如图中,起始值为64952031,结束值为64960097。 图片网址为here 。这里的基因
我正在尝试使用 h2o.Ensemble 在 h2o 中运行堆叠集成并收到此错误。 Error in h2o.randomForest(x = x, y = y, training_frame = t
Ensembles 示例应用程序 Idiomatic 是否应该无需配置或链接到库(如 Dropbox)就可以工作?当尝试启动它时,我得到这个: [...] Ensembles Basic Suppor
我是 Zookeeper 的新手,正在我的系统中使用 Zookeeper Ensemble 设置 Solr Cloud,当我尝试同时运行所有 Zookeeper 时出现问题,三个 Zookeeper
书上说, “An ensemble identifier is used to match stores across devices. It is important that this be th
我正在使用此代码来检测 face_spoofing import numpy as np import cv2 import joblib from face_detector import get_
如何在 Coq 中创建一组元素? 我已经查看了 Ensembles 的文档,但我没有看到任何构建 Ensembles 的方法。例如,在 Haskell 中,我将使用“Data.Set.fromList
我最近一直在与 zookeeper 合作来满足分布式应用程序的可靠性要求。我正在使用三台计算机,我遵循了本教程: http://sanjivblogs.blogspot.ie/2011/04/depl
我刚刚加入 python 和 biopython 工作,喜欢连接 Ensebml 并获取一些序列和其他数据,如 TSS、一些基因列表等。但我的问题是我似乎无法在 biopython 中找到任何方法或模
我一直在学习sklearn.ensemble,例如 clf =AdaBoostClassifier(svm.LinearSVC(),n_estimators=10,max_samples=0.1,)
我在 R 中运行 h2o.ensemble 时遇到错误。这是错误输出 [1] "Cross-validating and training base learner 1: h2o.glm.wrappe
我正在尝试通过带 Ensembles 的 IIS 8 Webdav 后端使用同步。我遇到的问题是第一次同步工作正常,但是当我尝试第二次或在第二个单元(在本例中为 iPad)上同步时,我收到服务器错误
我正在尝试在 python 中实现多个学习分类器。我在代码中有 5 个随机森林分类器,但现在我无法从 sklearn.ensemble 导入 VotingClassifier 函数。 当我写这篇文章时
我正在尝试使用随机森林在 Python 中执行聚类。在随机森林的 R 实现中,您可以设置一个标志来获取邻近矩阵。我似乎无法在随机森林的 python scikit 版本中找到任何类似的东西。有谁知道
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我正在尝试从 ensembl 运行此脚本 restapi.py ,但它会在下面生成此错误。请帮我解决它。 restapi.py import requests, sys server = "http:
我的计划是购买 Ensembles 2(以利用速度/效率等),但我试图确保我能够首先让它工作(在测试 Swift 项目中)。为此,我正在尝试使用 v1。 使用 Simple Sync with Swi
我们一直在测试 Ensembles 并根据我们当前的同步方法制定迁移策略。如果设备使用相同的 iCloud 帐户,我们会广泛使用 plist 来管理与 iCloud 配合良好的应用程序设置。 问题:使
我正在参加 Kaggle 竞赛 (data here) ,我在使用 scikit-learn 的 GradientBoostingRegressor 时遇到了问题。比赛使用均方根误差 (RMLSE)
我是一名优秀的程序员,十分优秀!