Skip feature when classifying, but show feature in output

前端 未结 2 2137
说谎
说谎 2021-02-07 05:29

I\'ve created a dataset which contains +/- 13000 rows with +/- 50 features. I know how to output every classification result: prediction and actual, but I would like to be able

相关标签:
2条回答
  • 2021-02-07 05:57

    Let's say follwoing are the attributes in the bbcsport.arff that you want to remove and is in a file attributes.txt line by line..

    serena
    serve
    service
    sets
    striking
    tennis
    tiebreak
    tournaments
    wimbledon
    ..
    Here is how you may include or exclude the attributes by setting true or false. (mutually elusive) remove.setInvertSelection(false)

    BufferedReader datafile = new BufferedReader(new FileReader("bbcsport.arff")); 
    BufferedReader attrfile = new BufferedReader(new FileReader("attributes.txt"));
    
    Instances data = new Instances(datafile); 
    List<Integer> myList = new ArrayList<Integer>();
    String line;
    
    while ((line = attrfile.readLine()) != null) {
      for (n = 0; n < data.numAttributes(); n++) {
        if (data.attribute(n).name().equalsIgnoreCase(line)) {
          if(!myList.contains(n)) 
            myList.add(n); 
        } 
      }
    }
    
    int[] attrs = myList.stream().mapToInt(i -> i).toArray();
    Remove remove = new Remove();
    remove.setAttributeIndicesArray(attrs);
    remove.setInvertSelection(false);
    remove.setInputFormat(data); // init filter
    
    Instances filtered = Filter.useFilter(data, remove);
    

    'filtered' has the final attributes..

    My blog .. http://ojaslabs.com/include-exclude-attributes-in-weka

    0 讨论(0)
  • 2021-02-07 06:00

    Use FilteredClassifier. See this and this .

    0 讨论(0)
提交回复
热议问题