package de.ugoe.cs.cpdp.dataprocessing; import java.util.ArrayList; import org.apache.commons.collections4.list.SetUniqueList; import weka.core.Instances; /** * Removes attributes from all data sets, except the one defined, using their name. * @author Fabian Trautsch */ public class AttributeNonRemoval implements ISetWiseProcessingStrategy, IProcessesingStrategy { /** * names of the attributes to be kept (determined by {@link #setParameter(String)}) */ private ArrayList attributeNames = new ArrayList(); /** * Sets that attributes that will be kept. The string contains the blank-separated names of the attributes to be kept. *

* Note, that keeping of attributes with blanks is currently not supported! * @param parameters string with the blank-separated attribute names */ @Override public void setParameter(String parameters) { if( parameters!=null ) { String[] attributeNamesArray = parameters.split(" "); for(String attributeName : attributeNamesArray) { attributeNames.add(attributeName); } } } /** * @see de.ugoe.cs.cpdp.dataprocessing.SetWiseProcessingStrategy#apply(weka.core.Instances, org.apache.commons.collections4.list.SetUniqueList) */ @Override public void apply(Instances testdata, SetUniqueList traindataSet) { for( String attributeName : attributeNames ) { for( int i=0 ; i=0; i--) { if(!attributeNames.contains(testdata.attribute(i).name())) { testdata.deleteAttributeAt(i); traindata.deleteAttributeAt(i); } } } }