删除Weka中的实例

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

for (each instance i in the training/test set) if (condition == TRUE) remove instance (i) from training/test set; 

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

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

我没有在这里看到问题。

天真的方法

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

 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); } } 

过滤方法

使用Weka实例filter之一( 受监督或无人监督 )或编写自己的filter。

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

 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);