-C
J48 にパラメーターを設定し、ハッシュテーブル内に格納されている 3 つの機能選択アルゴリズムを実行したいと考えています。精度、真陽性、真陰性、F1 などの 3 つのパフォーマンスを比較したいのですが、すべての機能選択アルゴリズムを実行すると、同じ出力が返されます...何か間違っていますか?
Hashtable<String, ASEvaluation> search=new Hashtable<String, ASEvaluation>();
Instances training_data = new Instances(new BufferedReader(
new FileReader("test.arff")));
training_data.setClassIndex(training_data.numAttributes() - 1);
topAttributes = new int[training_data.numAttributes()];
AttributeSelectedClassifier classifier = new AttributeSelectedClassifier();
AttributeSelection attsel = new AttributeSelection();
search.put("Infogain", new InfoGainAttributeEval());
search.put("SymmetricalUncertAttribute",new SymmetricalUncertAttributeEval());
search.put("Chisquared",new ChiSquaredAttributeEval());
for(String key : search.keySet()) {
try{
Ranker attribute_search = new Ranker();
J48 base = new J48();
CVParameterSelection ps = new CVParameterSelection();
ps.setClassifier(base);
ps.setNumFolds(5);
ps.addCVParameter("C 0.1 0.5 5");
ps.buildClassifier(training_data);
System.out.println("---------------- " + search.get(key).toString() + " ----------------");
classifier.setClassifier(ps);
classifier.setEvaluator(search.get(key));
classifier.setSearch(attribute_search);
attsel.setEvaluator(search.get(key));
attsel.setSearch(attribute_search);
attsel.setInputFormat(training_data);
Evaluation evaluation = new Evaluation(training_data);
evaluation.crossValidateModel(ps, training_data, 10, new Random(1));
System.out.println("\nevaluation ->");
System.out.println(evaluation.toSummaryString());
System.out.println("MAE: " + evaluation.meanAbsoluteError());
} catch(Exception e) {
e.printStackTrace();
}
}