package weka.filters.supervised.instance;
import weka.filters.Filter;
import weka.filters.SupervisedFilter;
import weka.core.OptionHandler;
import java.util.Enumeration;
import java.util.Vector;
import weka.core.Instances;
import weka.core.Attribute;
import weka.core.FastVector;
import weka.core.Utils;
public class Nominal extends Filter implements SupervisedFilter,OptionHandler{
public String [] getOptions(){
String [] options=new String[0];
return options;
}
public void setOptions(String [] options){
}
public Enumeration listOptions(){
Vector vector=new Vector(0);
return vector.elements();
}
public boolean batchFinished()throws Exception{
Instances input=getInputFormat();
String relation=input.relationName();
Instances output=new Instances(relation);
int numAttributes=input.numAttributes();
int numInstances=input.numInstances();
for(int i=0;i<numAttributes;i++){
FastVector vector=new FastVector();
for(int j=0;j<numInstances;j++){
double value=input.instance(j).value(i);
String string=String.valueOf(value);
if(vector.indexOf(string)==-1)vector.addElement(string);
}
Attribute attribute=new Attribute(input.attribute(i).name(),vector);
output.appendAttribute(attribute);
}
setOutputFormat(output);
for(int i=0;i<numInstances;i++)push(input.instance(i));
return super.batchFinished();
}
public static void main(String [] argv){
try{
if(Utils.getFlag('b',argv))Filter.batchFilterFile(new Nominal(),argv);
else Filter.filterFile(new Nominal(),argv);
}catch(Exception ex){
System.out.println(ex.getMessage());
}
}
}