删除Weka中的实例

Rus*_*ams 2 java instance weka

我正在使用Weka Java API,我有一段代码.在代码中,我试图做如下的事情:

for (each instance i in the training/test set)
        if (condition == TRUE)
            remove instance (i) from training/test set;
Run Code Online (Sandbox Code Playgroud)

[编辑]例如,我有1000个实例,我试图查看每个实例,如果满足特定条件.如果条件为真,那么我将从训练/测试集中删除该实例.

我相信Weka没有以这种方式直接删除实例的选项.任何建议,专业人士?

Sen*_*try 7

我没有在这里看到问题.

天真的方法

迭代数据集中的所有实例并删除符合条件的实例.

Instances data;
...

// it's important to iterate from last to first, because when we remove
// an instance, the rest shifts by one position.
for (int i = data.numInstances - 1; i >= 0; i--) {
    Instance inst = data.getInstance(i);
    if (condition(inst)) {
        data.delete(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

过滤方法

使用Weka实例过滤器之一(受监督无人监督)或编写自己的过滤器.

例如,您可以使用RemoveWithValues过滤器并应用批量过滤

Instances data;
RemoveWithValues filter = new RemoveWithValues();

String[] options = new String[4];
options[0] = "-C";   // attribute index
options[1] = "5";    // 5
options[2] = "-S";   // match if value is smaller than
options[3] = "10";   // 10
filter.setOptions(options);

filter.setInputFormat(data);
Instances newData = Filter.useFilter(data, filter);
Run Code Online (Sandbox Code Playgroud)