high sense
high sense

Reputation: 77

attribute selection assigned for each attribute

I am using weka with java by using Eclipse IDE for Java Development. Version: Neon 4.6.

I would like to know how could I extract the values like:

correlation ranking assigned for each attribute.

SVM-RFE ranking attribute and weight values assigned for each attribute

I would like to see these values on the screen.

I am using weka: I tried with this code:

public class AttributeSelectionTest {
      protected static void useRanker(Instances data) throws Exception {
            SVMAttributeEval  eval = new SVMAttributeEval();
            eval.buildEvaluator(data);
            Evaluation evaluation = new Evaluation(data);

            System.out.println(eval.getPercentToEliminatePerIteration());

            System.out.println(eval.attsToEliminatePerIterationTipText());

           eval.getPercentToEliminatePerIteration();
     for (int classInd = 0; classInd <  data.numAttributes(); classInd++)
              System.out.println(eval.rankBySVM(classInd,data));

         System.out.println(evaluation.toSummaryString());

          }



  public static void main(String[] args) throws Exception {
    // load data
         System.out.println("\n0. Loading data");
    DataSource source = new DataSource("data.arff"); 
    Instances data = source.getDataSet();

    if (data.classIndex() == -1)
      data.setClassIndex(data.numAttributes() - 1);


   useRanker(data);

  }
}

Upvotes: 0

Views: 64

Answers (1)

UmaShankar Chaurasiya
UmaShankar Chaurasiya

Reputation: 111

To get SVM-RFE ranking use the following code.Use your file data and load it using fileHandler

Dataset dataSet = FileHandler.loadDataset(new File("sample.data"), 4, ",");

RecursiveFeatureEliminationSVM svmrfe = new RecursiveFeatureEliminationSVM(0.2);

svmrfe.build(dataSet);

for (int i = 0; i < svmrfe.noAttributes(); i++)
    System.out.println(svmrfe.rank(i));

for the same data you can get the attribute selection ranking as

ASEvaluation eval = new GainRatioAttributeEval();

ASSearch search = new Ranker();

WekaAttributeSelection attributeSelection = new WekaAttributeSelection(eval,search);

wekaattrsel.build(dataSet);

for (int i = 0; i &lt; attributeSelection.noAttributes(); i++) 
    System.out.println("Attribute : " +  i +  "  Ranks : " + attributeSelection.rank(i)); 

Upvotes: 2

Related Questions