我查看了scikit-learn的文档,但对我来说尚不清楚在VotingClassifier的幕后使用哪种分类方法?是逻辑回归,SVM还是某种树方法?
我对改变引擎盖下使用的分类器方法感兴趣。如果Scikit-learn不提供这样的选项,是否有一个python软件包可以轻松地与scikit-learn集成在一起,从而提供这种功能?
编辑:
我的意思是用于第二级模型的分类器方法。我完全知道,第一级分类器可以是scikit-learn支持的任何类型的分类器。
第二级分类器将第一级分类器的预测用作输入。所以我的问题是-这个二级分类器使用什么方法?是逻辑回归吗?或者是其他东西?我可以更改它吗?
答案 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不会从第一级分类器中学习任何东西。它仅合并单个分类器的输出。
如果您希望元模型更加智能,请尝试使用adaboost,gradientBoosting模型。