2016-10-13 6 views
1

このチュートリアルhttps://weka.wikispaces.com/Text+categorization+with+WEKAの例「TextCategorizationTest.java」を使用しています。インスタンス内に1つのクラスを持たないARFF

"neg"と "pos"の2つのフォルダを持つ1つのディレクトリがあります。これらの2つのフォルダは、自分のARRFにあるクラスを表します。問題は、ARFFファイルを作成しようとすると、インスタンスに "pos"の属性クラスが含まれていないが、属性クラス "neg"にインスタンスが含まれていることです。

ここでは私のARFFファイルです: {1 1,3 1,24 1,27 1,29 1 @data :http://pastebin.com/6nGWEyMq

あなたが見ることができるように、 "POS" のインスタンスは、この形式で表示されています、37 ...} "neg"インスタンスは次の形式で表示されます: {0 neg、1 1,2 1,3 1,6 1 ...}

このARFFを修正するにはどうすればよいですか?私はwekaコードまたはweka GUIの両方のソリューションを受け入れます。

答えて

1

ARFFファイルは完全に問題ありません。変更する必要はありません。

ARFFファイルはスパース形式です。つまり、値が0の属性は省略されます。多くの属性が0になると予想されるシナリオでは、たとえば、単語数、この形式ははるかにコンパクトです。

{index value,index value,index value, ...} 

しかし、私が言ったように0ない属性のための唯一のインデックスがここにリストされているので、値0を持つ属性は、省略されます。

形式です。

名目属性は、値インデックス(属性インデックスと混同しないでください)を使用して格納され、クラス属性定義(インデックス0の最初の属性)は{pos,neg}の順番で格納されるため、値インデックス0 「neg」は値インデックス「1」を有する。つまり、 "pos"(インデックス0)がデフォルトであるため、すべての "pos"エントリが欠落しています。

あなたのデータのいくつかの行の最初の列はスパース形式である(あなたがそれを掲示として):

@data 
{1 1,3 1,24 1,27 1, ...} 
{1 1,4 1,5 1,8 1,17 1,24 1,26 1,29 1, ...} 
... 
{0 neg,17 1, ...} 

これが密形式で以下に相当します。

@data 
{0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0, ...} 
{0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1, ...} 
... 
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, ...} 
+0

最初に、 "pos"にはインデックス1があり、その後posにはインデックス0があると言いました。公称属性はインデックスを使用して保存されるため、 "neg"はインデックス0、 "pos"はインデックス "1"つまり、 "pos"(インデックス0)がデフォルトであるため、すべての "pos"エントリが欠落しています。 –

+0

あなたが正しいです、私はそれを書いて混乱させてしまいました。それを私が直した。 pos = 0、neg = 1。また、私は "インデックス"コンテキスト依存を使用していることに気付きました。私もそれを明確にすることができればと思います。 – Sentry

+0

ありがとうございました! –

関連する問題