我有两个多媒体数据集分类器。一个用于视觉材料,一个用于文本材料。我想结合这些分类器的预测来做出最终预测。我一直在阅读关于装袋,提升和叠加合奏的内容,所有这些看起来都很有用,我想尝试一下。但是,我似乎只能为我的具体问题找到相当理论的例子,没有足够的具体内容让我理解如何实际实现它(在python中使用scikit-learn)。我的两个分类器都使用10 KFold CV和SVM分类。两者都输出带有预测的n_samples = 1000
列表(1或0)。此外,我让它们都生成了预测所依据的概率列表,如下所示:
[[ 0.96761819 0.03238181]
[ 0.96761819 0.03238181]
....
[ 0.96761819 0.03238181]
[ 0.96761819 0.03238181]]
我如何将这些组合在一起。我应该用什么作为输入?我已经尝试水平连接标签预测并将它们作为特征输入,但没有运气(概率相同)。
答案 0 :(得分:4)
如果您正在寻找严格的组合,我建议使用brew,因为它建立在sklearn之上(意味着您可以使用您的sklearn分类器),并且,上次我检查时,sklearn对于创建合奏(Bagging,AdaBoost,RandomForest ......),但为您自己的自定义合奏(例如混合合奏)提供的组合规则并不多。
https://github.com/viisar/brew
from brew.base import Ensemble
from brew.base import EnsembleClassifier
from brew.combination.combiner import Combiner
# create your Ensemble
clfs = your_list_of_classifiers # [clf1, clf2]
ens = Ensemble(classifiers = clfs)
# create your Combiner
# the rules can be 'majority_vote', 'max', 'min', 'mean' or 'median'
comb = Combiner(rule='mean')
# now create your ensemble classifier
ensemble_clf = EnsembleClassifier(ensemble=ens, combiner=comb)
ensemble_clf.predict(X)
答案 1 :(得分:0)
这完全取决于你想要实现的整体方法。您是否看过sklearn-ensemble
文档?
http://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble
答案 2 :(得分:-3)
有一个名为' VotingClassifier'在sklearn.ensemble中,它可用于组合多个分类器,预测标签将基于来自登记分类器的投票。这是一个例子: