如何删除具有值高于阈值的属性的所有实例?

时间:2013-10-02 11:55:14

标签: weka

假设我们有以下数据集:

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

我想删除任何具有值为> 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)"

只删除了一个实例,即第3个实例,但第1个实例仍在那里。

我使用的版本是:3.6.2

1 个答案:

答案 0 :(得分:0)

如果您将表达式更改为:

SubsetByExpression -E“(ATT1&lt; 6)和(ATT2&lt; 6)以及(ATT3&lt; 6)和(ATT4&lt; 6),你得到了理想的结果。

我相信你当前的陈述说你应该保留实例,只要一个属性值小于6。这个新陈述说所有属性值都应该小于6