package rainbownlp.analyzer.evaluation; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import rainbownlp.core.FeatureValuePair; import rainbownlp.machinelearning.MLExample; import rainbownlp.machinelearning.convertor.SVMLightFormatConvertor; public class FeatureEvaluator { public void evaluateFeatures(ICrossfoldValidator cfValidator, List<MLExample> examples) throws Exception{ SVMLightFormatConvertor.onlyIncludeAttributes = new ArrayList<String>(); List<String> features = FeatureValuePair.getAllFeatureNames(); String featuresIncluded = ""; HashMap<String, IEvaluationResult> attributeResult = new HashMap<String, IEvaluationResult>(); for(String feature : features){ SVMLightFormatConvertor.onlyIncludeAttributes.add(feature); featuresIncluded+="/"+feature; attributeResult.put(featuresIncluded, cfValidator.crossValidation(examples, 2)); } for(String attributesIncluded : attributeResult.keySet()){ System.out.println("Result for these included features: "+attributesIncluded); attributeResult.get(attributesIncluded).printResult(); System.out.println("----------------------------"); } System.out.println("*************Integrated metric*************"); for(String attributesIncluded : attributeResult.keySet()){ System.out.println(attributesIncluded+"\t"+attributeResult.get(attributesIncluded).getIntegratedMetric()); } System.out.println("*******************************************"); } }