2014-09-27 37 views
0

我正在使用Weka對數據集進行分類。每個數據點都是我想要概括的五個主題之一。Weka分類;跨預定義主題進行交叉驗證

我想使每個主題成爲一個測試集,以便我可以訓練主題1-4並測試主題5,然後在主題1,3,4和5上進行訓練,然後測試2,等等。

有沒有一種方法可以讓Weka自動地用一個數據集預先執行一次?也就是說,我可以指示Weka按主題進行交叉驗證嗎?

如果已經詢問了此問題,我對冗餘表示歉意。如果確實如此,那麼我將非常感謝幫助我指導答案的任何幫助。

謝謝!

回答

0

有跡象表明,我能想到的幾個方法可以幫助讓你想要的結果:

  1. 當你在你的問題已經列出,您可以生成5個不同的訓練集,其餘主題作爲測試集。如果您打算使用Weka界面(提供訓練數據,構建分類器並提供測試集,重複),則每個模型都需要單獨進行培訓。這可能是最快的,如果它是一次性的。

  2. 您可以使用帶有RemoveWithValues過濾器的FilteredClassifier。如果主題編號是可用屬性(我猜這些數據不是模型數據的一部分,但是如果使用這種方法也可能需要屬性過濾),那麼這可能能夠移除特定主題的培訓案例。

  3. 如果您願意使用Java編寫解決方案,您將能夠操縱數據並一次構建五個分類器中的每一個。我在想這個模型的算法如下所述。如果你打算進行這個過程很多,這可能是更好的解決方案。

算法:

for each topic t 
    training_data = all cases not containing topic t 
    testing_data = training_set cases containing topic t 
    build classifier using training_data, testing_data 
    save classifier 
end for