2014-03-01 115 views
0

我需要完成Weka中的文本分類任務。我有以下層次結構中的數據文件。weka混淆StringToWordVector過濾器輸出

mobydick 
    part1 
    1 
    2 
    part2 
    1 
    2 
    part3 
    1 
    2 

凡和是類partx文字的卡盤。我

java -cp /usr/share/java/weka-3.6.6.jar weka.core.converters.TextDirectoryLoader -dir mobydick > moby.arff 

負載的數據我應用過濾器StringToWordVector用默認設置,並保存輸出。

我有一個regatrding輸出的問題。輸出以下

... 
@attribute @@[email protected]@ {part3,part1,part2} 
... 
@data 
{1 1,6 1,10 1...82 1,83 1} 
{2 1,3 1,4 1...84 1,85 1} 
{0 part1,12 1,23 1,...134 1,137 1} 
{0 part1,23 1,26 1,...135 1,136 1} 
{0 part2,12 1,17 1,...219 1,220 1} 
{0 part2,12 1,21 1,...214 1,215 1} 

非常奇怪的輸出,由於某種原因,秧雞放置標籤爲載體,我希望看到類似{}標籤。另外,weka並沒有將label3放在vector中,顯然它是多餘的,但是爲了簡單起見,最好將它放在那裏。

所以,在這裏我看到有很多技巧,我的問題是什麼原因這樣做,如果這是正確的,也許我的輸出是我與weka錯誤操縱的結果。

回答

1

您的操作是正確的,但您的期望與WEKA格式數據集的方式不同。

該類是屬性,這是要預測的屬性,所以它存在於向量中。由於您應用過濾器的方式,這是第一個屬性。

輸出格式很稀疏,這意味着您可以爲那些非零值的屬性索引和值獲得一對。但是,對於名義屬性(因爲該類存在此問題),您將獲得索引和值,該值與默認值不同(默認值是第一個),在這種情況下爲第一個值 - part3。由於班級是第一個屬性(索引0),因此您得到0 part20 part1,因爲part2part1不是默認值。