scikit-learn的VotingClassifier中使用的分类器是什么?

时间:2019-01-15 13:57:40

标签: python-3.x scikit-learn ensemble-learning

我查看了scikit-learn的文档,但对我来说尚不清楚在VotingClassifier的幕后使用哪种分类方法?是逻辑回归,SVM还是某种树方法?

我对改变引擎盖下使用的分类器方法感兴趣。如果Scikit-learn不提供这样的选项,是否有一个python软件包可以轻松地与scikit-learn集成在一起,从而提供这种功能?

编辑:

我的意思是用于第二级模型的分类器方法。我完全知道,第一级分类器可以是scikit-learn支持的任何类型的分类器。

第二级分类器将第一级分类器的预测用作输入。所以我的问题是-这个二级分类器使用什么方法?是逻辑回归吗?或者是其他东西?我可以更改它吗?

2 个答案:

答案 0 :(得分:4)

常规

VotingClassifier不限于一种特定的方法/算法。您可以选择多种不同的算法,并将它们组合到一个VotingClassifier中。参见下面的示例:

iris = datasets.load_iris()
X, y = iris.data[:, 1:3], iris.target

clf1 = LogisticRegression(...)
clf2 = RandomForestClassifier(...)
clf3 = SVC(...)

eclf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('svm', clf3)], voting='hard')

在此处详细了解用法:VotingClassifier-Usage。 当涉及到VotingClassifier如何投票时,您可以指定voting='hard'voting='soft'。有关更多详细信息,请参见下面的段落。

投票

多数阶级标签(多数/硬投票)

  

多数表决中,特定样本的预测类别标签   是代表类的大多数(模式)的类标签   每个分类器预测的标签。

     

例如,如果给定样本的预测是

     

分类器1->分类1分类器2->分类1分类器3->分类   2 VotingClassifier(投票=“困难”)将对样本进行分类   根据多数类别标签为“ 1级”。

来源:scikit-learn-majority-class-labels-majority-hard-voting

加权平均概率(软投票)

  

与多数投票(硬投票)相比,软投票返回的是   类标签为预测概率之和的argmax。

     

可以通过权重将特定权重分配给每个分类器   参数。提供权重时,预测类别   收集每个分类器的概率,再乘以   分类器权重,然后取平均值。然后得出最终的类标签   来自类别标签的平均概率最高。

来源/在此处了解更多信息:scikit-learn-weighted-average-probabilities-soft-voting

答案 1 :(得分:1)

VotingClassifier在分类器输出的第一级上不适合任何元模型。 它只是通过模式(如果投票很困难)或概率的平均值(如果投票很软)来汇总第一级每个分类器的输出。

简单来说,VotingClassifier不会从第一级分类器中学习任何东西。它仅合并单个分类器的输出。

如果您希望元模型更加智能,请尝试使用adaboostgradientBoosting模型。