package weka.bin; import weka.core.OptionHandler; import java.util.Enumeration; import java.util.Vector; import weka.core.Option; import weka.core.Utils; import java.io.IOException; import java.io.FileReader; import weka.core.Instances; import weka.associations.Cliques; import weka.associations.Clique; public class hcMeanOrMode implements OptionHandler{ String relation,clique; public Enumeration listOptions(){ Vector vector=new Vector(2); vector.addElement(new Option("\trelation(arff) file","",1,"<relation.arff>")); vector.addElement(new Option("\tclique file","",1,"<clique.hc>")); return vector.elements(); } public void setOptions(String [] options)throws Exception{ String option; option=Utils.getOption(1,options); if(option.length()>0)relation=option; else throw new Exception("relation not specified"); option=Utils.getOption(2,options); if(option.length()>0)clique=option; else throw new Exception("hyperclique not specified"); } public String [] getOptions(){ String [] options=new String[2]; int current=0; options[current++]=relation; options[current++]=clique; return options; } public Instances getInstances()throws IOException{ Instances dataset=new Instances(new FileReader(relation)); Cliques cliques=new Cliques(new FileReader(clique)); Instances result=new Instances(dataset,0); for(int i=0,ii=cliques.capacity();i<ii;i++){ result.add(new Instances(dataset,cliques.clique(i).items).meanOrMode()); } return result; } public static void main(String [] argv){ try{ hcMeanOrMode util=new hcMeanOrMode(); util.setOptions(argv); Instances instances=util.getInstances(); System.out.print(instances); }catch(Exception e){ System.out.println(e.getMessage()); e.printStackTrace(); } } }