删除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

预先感谢!

您可以使用Remove过滤器来完成此操作。具体而言,这些线路应该达到预期的效果:

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

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

最新更新