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

Posted

技术标签:

【中文标题】两个分类器之间的投票如何在 sklearn 中工作?【英文标题】:How does voting between two classifiers work in sklearn? 【发布时间】:2018-07-09 18:46:06 【问题描述】:

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

【问题讨论】:

【参考方案1】:

假设你有两个类 class-Aclass-B

Logistic Regression( 有一个内置的 predict_proba() 方法) 和 SVC(set probability=True) 都能够估计其输出的类别概率,即它们预测输入是否为 class-A 概率 aclass-B 概率 b。如果 a>b 则输出预测类别为 A 否则为 B 。在投票分类器中,将投票参数设置为 soft 启用它们( SVM 和 LogiReg)分别计算它们的概率(也称为置信度分数)并将其呈现给投票分类器,然后voting classifier 对它们进行平均并输出概率最高的类。

确保如果您设置了voting=soft,那么您提供的分类器也可以计算此置信度分数。

要查看每个分类器的置信度,您可以这样做:

from sklearn.metrics import accuracy_score
y_pred=classifer_name.predict(X_test) #classifier_name=trained SVM/LogiReg/VotingClassifier
print(classifier_name.__class__.__name__,accuracy_score(y_true,y_pred))

注意:由于计算机浮点四舍五入,a+b 可能看起来不是 1。但它是1。我不能说像决策函数这样的其他置信度分数,但是使用 predict_proba() 就是这种情况。

【讨论】:

我不能说诸如决策函数之类的其他置信度分数,但是使用 predict_proba() 样本的所有概率之和等于 1。由于计算机浮点运算,它可能看起来不是 1离开。但它是 1。 @VivekKumar 谢谢你的澄清,可能是这样。我将更新我的答案并添加您的floating point 结束部分。

以上是关于两个分类器之间的投票如何在 sklearn 中工作?的主要内容,如果未能解决你的问题,请参考以下文章

您将如何使用 Sklearn 的 VotingClassifier 进行 RandomizedSearchCV?

sklearn 中 BaggingClassifier 的默认配置与硬投票的区别

Sklearn 的 SimpleImputer 不能在管道中工作?

如何让 Jest 自定义匹配器在打字稿中工作?

[机器学习python实践]Sklearn实现集成

“插槽激活器”如何在 vuetify 中工作?