簡體   English   中英

Sklearn:如何為兩個二元分類器制作集成?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM