Sklearn:如何为两个二元分类器制作一个集成?
Sklearn: How to make an ensemble for two binary classifiers?
我有两个用于多媒体数据集的分类器。一种用于视觉 material,一种用于文本 material。我想结合这些分类器的预测来做出最终的预测。我一直在阅读有关 bagging、boosting 和 stacking ensembles 的文章,它们似乎都很有用,我想尝试一下。然而,我似乎只能为我的具体问题找到相当理论的例子,没有足够具体的例子让我理解如何实际实现它(在 python 和 scikit-learn 中)。我的两个分类器都使用 10 KFold CV 和 SVM 分类。两者都输出带有预测(1 或 0)的 n_samples = 1000
列表。另外,我让它们都生成了一个概率列表,预测所基于的概率列表如下所示:
[[ 0.96761819 0.03238181]
[ 0.96761819 0.03238181]
....
[ 0.96761819 0.03238181]
[ 0.96761819 0.03238181]]
我将如何将它们组合成一个整体。我应该使用什么作为输入?我尝试水平连接标签预测并将它们作为特征输入,但没有运气(概率相同)。
这完全取决于您要实现的集成方法。您看过 sklearn-ensemble
文档了吗?
http://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble
如果您正在寻找严格的组合,我建议使用 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)
sklearn.ensemble 中有一个名为 'VotingClassifier' 的分类器,可用于合并多个分类器,预测标签将基于入伍分类器的投票。这是示例:
我有两个用于多媒体数据集的分类器。一种用于视觉 material,一种用于文本 material。我想结合这些分类器的预测来做出最终的预测。我一直在阅读有关 bagging、boosting 和 stacking ensembles 的文章,它们似乎都很有用,我想尝试一下。然而,我似乎只能为我的具体问题找到相当理论的例子,没有足够具体的例子让我理解如何实际实现它(在 python 和 scikit-learn 中)。我的两个分类器都使用 10 KFold CV 和 SVM 分类。两者都输出带有预测(1 或 0)的 n_samples = 1000
列表。另外,我让它们都生成了一个概率列表,预测所基于的概率列表如下所示:
[[ 0.96761819 0.03238181]
[ 0.96761819 0.03238181]
....
[ 0.96761819 0.03238181]
[ 0.96761819 0.03238181]]
我将如何将它们组合成一个整体。我应该使用什么作为输入?我尝试水平连接标签预测并将它们作为特征输入,但没有运气(概率相同)。
这完全取决于您要实现的集成方法。您看过 sklearn-ensemble
文档了吗?
http://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble
如果您正在寻找严格的组合,我建议使用 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)
sklearn.ensemble 中有一个名为 'VotingClassifier' 的分类器,可用于合并多个分类器,预测标签将基于入伍分类器的投票。这是示例: