删除weka实例

时间:2018-03-28 10:48:38

标签: java weka

我在Weka中做过一些属性选择(信息增益)。之后,由于信息增益方法中每个属性的重要性,它返回具有新属性排列的新数据。我想删除一列或多列新数据,以便在我的数据集中拥有信息属性。 在这里你可以看到我的代码:

    Instances data = new Instances(new BufferedReader(new FileReader("iris.arff")));

    InfoGainAttributeEval eval = new InfoGainAttributeEval();
    Ranker search = new Ranker();

    AttributeSelection attSelect = new AttributeSelection();
    attSelect.setEvaluator(eval);
    attSelect.setSearch(search);
    attSelect.SelectAttributes(data);

    int[] indices = attSelect.selectedAttributes();

    data = attSelect.reduceDimensionality(data); //re-arrange attributes but not remove them

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以使用Remove过滤器来完成此操作。具体来说,沿着这些方向的东西应该达到预期的效果:

Remove removeFilter = new Remove();
removeFilter.setAttributeIndicesArray(indices);
removeFilter.setInvertSelection(true);
removeFilter.setInputFormat(data);
Instances newData = Filter.useFilter(data, removeFilter);

这假定indices包含您要保留的属性索引。如果它包含您要删除的属性的索引,则删除对setInvertSelection方法的调用。