两个分类器之间的投票如何在 sklearn 中工作?
Posted
技术标签:
【中文标题】两个分类器之间的投票如何在 sklearn 中工作?【英文标题】:How does voting between two classifiers work in sklearn? 【发布时间】:2018-07-09 18:46:06 【问题描述】:对于分类任务,我使用投票分类器来集成逻辑回归和支持向量机,投票参数设置为soft
。结果明显优于每个单独的模型。我不确定我是否理解它是如何工作的。模型如何仅在两个模型之间找到多数票?
【问题讨论】:
【参考方案1】:假设你有两个类 class-A
和 class-B
Logistic Regression
( 有一个内置的 predict_proba() 方法) 和 SVC
(set probability=True) 都能够估计其输出的类别概率,即它们预测输入是否为 class-A 概率 a 和 class-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 的默认配置与硬投票的区别