List of usage examples for weka.attributeSelection Ranker setGenerateRanking
@Override public void setGenerateRanking(boolean doRank)
From source file:net.semanticmetadata.lire.classifiers.HashingSearchBasedClassifierMod.java
License:Open Source License
private static HashMap<String, Double> calculateInformationGain(String wekaFileLocation, double[] featureInformationGain, int featureSpace[], HashMap<String, Integer> featureSpaceHashMap, ArrayList<String> featureOrder, HashMap<String, Double> featureInformationGainHashMap) { Instances data = null;/*from ww w. j a v a2s. co m*/ try { data = new Instances(new BufferedReader(new FileReader(wekaFileLocation))); } catch (IOException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } AttributeSelection attsel = new AttributeSelection(); // package weka.attributeSelection! InfoGainAttributeEval eval = new InfoGainAttributeEval(); Ranker search = new Ranker(); search.setThreshold(-1.7976931348623157E308); search.setNumToSelect(-1); search.setGenerateRanking(true); attsel.setEvaluator(eval); attsel.setSearch(search); try { attsel.SelectAttributes(data); } catch (Exception e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } // obtain the attribute indices that were selected int[] indices = new int[0]; double[][] rankedAttribuesArray = new double[0][0]; try { rankedAttribuesArray = attsel.rankedAttributes(); } catch (Exception e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } try { indices = attsel.selectedAttributes(); } catch (Exception e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } for (int i = 0; i < rankedAttribuesArray.length; i++) { int currentFeature = Integer.parseInt(data.attribute((int) rankedAttribuesArray[i][0]).name() .substring(0, data.attribute((int) rankedAttribuesArray[i][0]).name().indexOf("_"))); //System.out.println("DDDDDDDDDDDDDD"+currentFeature); // System.out.print(data.attribute((int) rankedAttribuesArray[i][0]).name() + "/" + rankedAttribuesArray[i][0] + "/"); // System.out.println(rankedAttribuesArray[i][1]); // data.attribute((int) rankedAttribuesArray[i][0]).name().substring(0,data.attribute((int) rankedAttribuesArray[i][0]).name().indexOf("_")); // featureInformationGain[currentFeature] = featureInformationGain[currentFeature] + rankedAttribuesArray[i][1]; featureInformationGainHashMap.put(featureOrder.get(currentFeature), featureInformationGainHashMap.get(featureOrder.get(currentFeature)) + rankedAttribuesArray[i][1]); } //Caalculate the mean of the information gain (better comparable) // for (int i = 0; i < featureInformationGain.length; i++) { // featureInformationGain[i] = (featureInformationGain[i] / featureSpace[i]) * 100; // } //Calculate the mean of the information gain (better comparable) for (int i = 0; i < featureOrder.size(); i++) { // featureInformationGainHashMap.put(featureOrder.get(i), (featureInformationGainHashMap.get(featureOrder.get(i)) / featureSpaceHashMap.get(featureOrder.get(i))) * 100); featureInformationGainHashMap.put(featureOrder.get(i), (featureInformationGainHashMap.get(featureOrder.get(i)))); } // for(int i=0;i<0;i++){ // System.out.println(data.attribute(indices[i]).toString()); // } System.out.println("Scoring finished, starting with classification! Scores: "); for (int i = 0; i < featureOrder.size(); i++) { System.out.println(featureOrder.get(i) + " " + featureInformationGainHashMap.get(featureOrder.get(i))); // featureInformationGainHashMap.put(featureOrder.get(i),(featureInformationGainHashMap.get(featureOrder.get(i))/featureSpaceHashMap.get(featureOrder.get(i)))*100); } // return featureInformationGain; File deleteFile = new File(wekaFileLocation); deleteFile.delete(); return featureInformationGainHashMap; }