我有一个属性(使用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个实例。
我无法找到一种下降方式来做到这一点。任何帮助将不胜感激。
答案 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)
找到一个答案。
找到所需属性值的index
。
循环数据集并计算出现次数。
代码:
Instances training = loadData("...");
for(Instance instance: training){
counter += (int)instance.value(i) == index ? 1 : 0;
}