2010-09-16 85 views
1

我剛用Weka在「Classify」標籤下訓練我的SVM分類器。 現在我想進一步調查哪些數據樣本是錯誤分類的,我需要研究它們的模式,但我不知道Weka從哪裏看這個。 任何人都可以給我一些幫助嗎? 在此先感謝。關於調查Weka樣本的初學者問題

回答

3

您可以啓用從選項:

alt text

您將獲得以下實例預測:

=== Predictions on test split === 

inst#  actual predicted error prediction 
    1 2:Iris-ver 2:Iris-ver   0.667 
    ... 
    16 3:Iris-vir 2:Iris-ver +  0.667 

編輯

正如我在解釋評論,你可以n使用StratifiedRemoveFolds過濾器手動分割數據並創建10倍的交叉驗證。

來自Weka wiki的這個Primer有一些如何從命令行調用Weka的例子。下面是一個示例bash腳本:

#!/bin/bash 

# I assume weka.jar is on the CLASSPATH 

# 10-folds CV 
for f in $(seq 1 10); do 
    echo -n "." 

    # create train/test set for fold=f 
    java weka.filters.supervised.instance.StratifiedRemoveFolds -i iris.arff \ 
     -o iris-f$f-train.arff -c last -N 10 -F $f -V 
    java weka.filters.supervised.instance.StratifiedRemoveFolds -i iris.arff \ 
     -o iris-f$f-test.arff -c last -N 10 -F $f 

    # classify using SVM and store predictions of test set 
    java weka.classifiers.functions.SMO -C 1.0 \ 
     -K "weka.classifiers.functions.supportVector.RBFKernel -G 0.01" \ 
     -t iris-f$f-train.arff -T iris-f$f-test.arff \ 
     -p 0 > f$f-pred.txt 
     #-i > f$f-perf.txt 
done 
echo 

對於每個倍,這將創建兩個數據集(火車/測試),並存儲在文本文件中的預測也是如此。這樣您可以將每個索引與測試集中的實際實例進行匹配。

當然同樣可以在GUI中,如果你喜歡做(只有一點點比較繁瑣!)

+0

謝謝,銀行,真正幫助一個lot.One更多的問題,如果我想進一步調查,我意思是,我想看看這個錯誤分類的原始樣本做一些模式分析,我怎麼能這樣做呢?換句話說,我怎麼能找到我的原始.arff數據文件中的相應條目?Thanks1 – Kevin 2010-09-16 03:03:54

+1

我想它取決於你使用的測試程序。如果您考慮使用相同的數據集進行訓練/測試,那麼inst#將與文件的順序相同。否則,您可以使用** StratifiedRemoveFolds **過濾器手動分離數據集(比如2/3列車和1/3測試,甚至交叉驗證摺疊),然後將新文件作爲測試集提供,這樣實例的順序被保留。另一種方法是使用** AddClassification **過濾器,該過濾器將使用您選擇的算法將新列添加到包含預測的數據集中。 – Amro 2010-09-16 03:32:07

+0

...這些過濾器可以應用在「預處理」選項卡 – Amro 2010-09-16 03:33:32