2013-04-04 87 views
1

我已經使用兩個分類器(如naivebayes和SMO)訓練和測試了數據。現在我需要使用堆疊將它們結合起來。我需要知道如何執行堆疊,以及應該如何使用我的基本級別分類器和元級別分類器。堆積在數據挖掘中

回答

2

這聽起來像你想要的是ensemble learning而不是堆疊。在一個集合中,你可以使用兩個分類器來作出決定併合並這些決定。

堆疊是將一個分類器的輸出用作下一個等級的輸入的過程。也就是說,一些分類器的預測是其他分類器的特徵。爲此,您需要重新訓練其中一個模型,並將第一個分類器的輸出作爲輸入。

應使用哪一個分類器,取決於您的具體應用。同樣,如何去做取決於你用什麼系統來訓練這些分類器。

0

要選擇用於堆疊的基礎級分類器,請考慮可能可以在特徵子集或數據子集上學習的各種分類器。例如,您的基級分類器可能是K-NN,隨機森林和樸素貝葉斯。對於元級分類器,我們希望選擇一個能夠基於基本級預測作爲特徵很好地學習的分類器。一個好的候選人是Logistic迴歸。

使用mlxtend圖書館爲例,我們有:

from sklearn.linear_model import LogisticRegression 
from sklearn.neighbors import KNeighborsClassifier 
from sklearn.naive_bayes import GaussianNB 
from sklearn.ensemble import RandomForestClassifier 
from mlxtend.classifier import StackingClassifier 

clf1 = KNeighborsClassifier(n_neighbors=1) 
clf2 = RandomForestClassifier(random_state=1) 
clf3 = GaussianNB() 
lr = LogisticRegression() 
sclf = StackingClassifier(classifiers=[clf1, clf2, clf3], 
          meta_classifier=lr) 

有關堆疊分類和迴歸量的例子看mlxtend documentation page