[英]Sklearn: How to make an ensemble for two binary classifiers?
我有兩個用於多媒體數據集的分類器。 一種用於視覺材料,一種用於文本材料。 我想結合這些分類器的預測來做出最終的預測。 我一直在閱讀關於 bagging、boosting 和 stacking ensemble 的文章,所有這些看起來都很有用,我想嘗試一下。 然而,我似乎只能為我的特定問題找到相當理論化的例子,沒有什么具體到讓我理解如何實際實現它(在 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]]
我將如何將這些組合成一個整體。 我應該使用什么作為輸入? 我試過水平連接標簽預測並將它們作為特征輸入,但沒有運氣(概率相同)。
如果您正在尋找嚴格的組合,我建議使用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
文檔?
http://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble
sklearn.ensemble 中有一個名為“VotingClassifier”的分類器,可用於對多個分類器進行分組,預測標簽將基於來自登記分類器的投票。 這是示例:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.