Java Weka获取具有给定属性值的所有实例

时间:2018-04-01 11:50:11

标签: java machine-learning attributes weka

我有一个属性(使用Weka!)

@attribute age {10-19,20-29,30-39,40-49,50-59,60-69,70-79,80-89,90-99}

如何获取属性age中的值为20-29的所有数据的Instances对象?

例如,我的Instances data大小为100,其中只有10个,它们在属性age中的值为20-29,那么我想得到一个Instances对象10个实例。

我无法找到一种下降方式来做到这一点。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您还可以使用流和类型推断,尽管看起来有点笨拙:

int index = training.attribute("age").index();
String nominalToFilter = "20-29";

var filteredInstances = new Instances(training, 0); // Empty Instances with same header
training.parallelStream()
        .filter(instance -> instance.stringValue(index).equals(nominalToFilter))
        .forEachOrdered(filteredInstances::add);

答案 1 :(得分:0)

找到一个答案。

  1. 找到所需属性值的index

  2. 循环数据集并计算出现次数。

  3. 代码:

    Instances training = loadData("...");
    for(Instance instance: training){
        counter += (int)instance.value(i) == index ? 1 : 0;
    }