1

次のデータセットがあるとします。

X1: {4,7,0,1}
X2: {4,3,2,1}
X3: {6,6,6,6}

value の属性を持つインスタンスをすべて削除したいのですが> 5、この例では X1 と X3 を削除する必要があります。500 を超える属性があり、使用しようとしました。

SubsetByExpression -E "(ATT1 < 6) or ... or (ATT500 < 6)"

これによりほとんどのインスタンスがフィルタリングされましたが、値が 5 を超えるインスタンスがまだいくつかあります (一部を削除して他のインスタンスを保持した理由はよくわかりません)。

使用する別のより適切なフィルターや、WEKA 内からこのタスクを達成する他の方法はありますか?

アップデート:

これが具体的な例です。ARFF ファイルの内容:

@relation Test

@attribute word_1 NUMERIC
@attribute word_2 NUMERIC
@attribute word_3 NUMERIC
@attribute word_4 NUMERIC

@data
4,7,0,1
4,3,2,1
6,6,6,6
0,5,1,4

値が 6 以上の属性を持つすべてのインスタンスを削除したいので、1 行目と 3 行目を削除する必要があります。このフィルターを使用する場合:

SubsetByExpression -E "(ATT1 < 6) or (ATT2 < 6) or (ATT3 < 6) or (ATT4 < 6)"

1 つのインスタンス (3 番目) だけが削除されますが、1 番目のインスタンスはまだそこにあります。

私が使用しているバージョンは次のとおりです: 3.6.2

4

1 に答える 1

0

式を次のように変更した場合:

SubsetByExpression -E "(ATT1< 6) and (ATT2< 6) and (ATT3< 6) and (ATT4< 6)"、目的の結果が得られます。

あなたの現在の声明は、1 つの属性値が 6 未満である限りインスタンスを保持する必要があると言っていると思います。この新しいステートメントは、すべての属性値が 6 未満である必要があることを示しています

于 2013-10-02T14:42:05.037 に答える