java - 删除 Weka 中的实例

标签 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;

[编辑] 例如,我有 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 实例过滤器之一( supervisedunsupervised )或编写您自己的过滤器。

例如,您可以使用 RemoveWithValues filter并申请Batch filtering

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

关于java - 删除 Weka 中的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18414894/

相关文章:

java - QT 与 Flex/Flash/AIR 的多媒体对比

java - 使用Spring Boot根据输入请求中的字段创建类链的不同实例

machine-learning - 使用Weka玩游戏

java - weka:自动应用属性选择

machine-learning - 为什么 Weka 的实验器没有显示全部 10 次折叠的结果?

java - 在byte buddy的MethodDelegation中高效获取调用者

java - ActionListener 无法通过按钮将数据从 JList 移动到其他 JList

c++ - 类中的静态局部变量是否在对象之间持久存在?

java - 如何将对象的一个​​元素转换为实例数组?

java - 在 Lucene 中结合数值范围查询和术语查询