source: trunk/CrossPareConfigurationBuilder/src/de/ugoe/cs/crosspare/ConfigurationBuilder.java @ 59

Last change on this file since 59 was 59, checked in by sherbold, 8 years ago
  • Property svn:mime-type set to text/plain
File size: 19.7 KB
Line 
1package de.ugoe.cs.crosspare;
2
3import java.io.FileWriter;
4import java.io.IOException;
5import java.lang.reflect.InvocationTargetException;
6import java.security.InvalidParameterException;
7
8public class ConfigurationBuilder {
9
10    private static enum Dataset {MDP, JURECZKO};
11   
12    private static final String storageFolder = "config/";
13   
14    public static void main(String[] args) {
15        for( Dataset dataset : Dataset.values() ) {
16            writeFile("Koshgoftaar2008", dataset);
17            writeFile("Watanabe2008", dataset);
18            writeFile("Turhan2009", dataset);
19            writeFile("CamargoCruz2009", dataset);
20            // TODO Liu 2010
21            writeFile("Menzies2011", dataset);
22            writeFile("Ma2012", dataset);
23            writeFile("Peters2012", dataset);
24            writeFile("Uchigaki2012", dataset);
25            // TODO Canfora 2013 (MODEP)
26            writeFile("Peters2013", dataset);
27            writeFile("Herbold2013", dataset);
28            writeFile("ZHe2013", dataset);
29            writeFile("Nam2013", dataset);
30            writeFile("Panichella2014", dataset);
31            // TODO F.Zhang 2014
32            // TODO Mizuno 2014: data not public
33            // TODO Ryu 2014
34            writeFile("PHe2015", dataset);
35            // TODO Peters 2015 (LACE2)
36            // TODO Chen 2015
37            writeFile("Kawata2015", dataset);
38            writeFile("YZhang2015", dataset);
39            writeFile("Amasaki2015", dataset);
40            // TODO Ryu 2015a
41            writeFile("Ryu2015b", dataset);
42            // TODO Cao 2015 implementation details missing
43            writeFile("Nam2015b", dataset);
44        }
45    }
46   
47    public static void writeFile(String approach, Dataset dataset) {
48        FileWriter writer;
49        try {
50            writer = new FileWriter(storageFolder + dataset.toString() + "-" + approach + ".xml");
51            writer.append((String) ConfigurationBuilder.class.getMethod(approach, Dataset.class).invoke(null, dataset));
52            writer.flush();
53            writer.close();
54        }
55        catch (IOException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
56            // TODO Auto-generated catch block
57            e.printStackTrace();
58        }
59    }
60   
61    public static void preamble(StringBuilder configFile) {
62        configFile.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
63        configFile.append("<config xmlns=\"experimentconfig\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"experimentconfig experimentconfig.xsd\">\n");
64    }
65   
66    public static void postamble(StringBuilder configFile) {
67        configFile.append("</config>");
68    }
69   
70    public static void trainers(StringBuilder configFile) {
71        configFile.append(" <trainer name=\"WekaTraining\" param=\"RandomForest weka.classifiers.trees.RandomForest -CVPARAM I 5 25 5\" />\n");
72        configFile.append(" <trainer name=\"WekaTraining\" param=\"C4.5-DTree weka.classifiers.trees.J48 -CVPARAM C 0.1 0.3 5\" />\n");
73        configFile.append(" <trainer name=\"WekaTraining\" param=\"Logistic weka.classifiers.functions.Logistic\" />\n");
74        configFile.append(" <trainer name=\"WekaTraining\" param=\"NeuralNetwork weka.classifiers.functions.MultilayerPerceptron -CVPARAM M 1.5 2.5 3.0 L 0.2 0.4 3.0\" />\n");
75        configFile.append(" <trainer name=\"WekaTraining\" param=\"RBFNetwork weka.classifiers.functions.RBFNetwork -CVPARAM W 0.1 10.0 3.0 L 2.0 18.0 3.0\" />\n");
76        configFile.append(" <trainer name=\"WekaTraining\" param=\"SMORBF weka.classifiers.functions.SMO -K weka.classifiers.functions.supportVector.RBFKernel\" />\n");
77    }
78   
79    public static void trainersBagging(StringBuilder configFile) {
80        configFile.append(" <setwisetrainer name=\"WekaBaggingTraining\" param=\"BaggingRandomForest weka.classifiers.trees.RandomForest -CVPARAM I 5 25 5\" />\n");
81        configFile.append(" <setwisetrainer name=\"WekaBaggingTraining\" param=\"BaggingC4.5-DTree weka.classifiers.trees.J48 -CVPARAM C 0.1 0.3 5\" />\n");
82        configFile.append(" <setwisetrainer name=\"WekaBaggingTraining\" param=\"BaggingLogistic weka.classifiers.functions.Logistic\" />\n");
83        configFile.append(" <setwisetrainer name=\"WekaBaggingTraining\" param=\"BaggingNeuralNetwork weka.classifiers.functions.MultilayerPerceptron -CVPARAM M 1.5 2.5 3.0 L 0.2 0.4 3.0\" />\n");
84        configFile.append(" <setwisetrainer name=\"WekaBaggingTraining\" param=\"BaggingRBFNetwork weka.classifiers.functions.RBFNetwork -CVPARAM W 0.1 10.0 3.0 L 2.0 18.0 3.0\" />\n");
85        configFile.append(" <setwisetrainer name=\"WekaBaggingTraining\" param=\"BaggingSMORBF weka.classifiers.functions.SMO -K weka.classifiers.functions.supportVector.RBFKernel\" />\n");
86    }
87   
88    public static void trainersLocalWhere(StringBuilder configFile) {
89        configFile.append(" <trainer name=\"WekaLocalFQTraining\" param=\"LocalRandomForest weka.classifiers.trees.RandomForest -CVPARAM I 5 25 5\" />\n");
90        configFile.append(" <trainer name=\"WekaLocalFQTraining\" param=\"LocalC4.5-DTree weka.classifiers.trees.J48 -CVPARAM C 0.1 0.3 5\" />\n");
91        configFile.append(" <trainer name=\"WekaLocalFQTraining\" param=\"LocalLogistic weka.classifiers.functions.Logistic\" />\n");
92        configFile.append(" <trainer name=\"WekaLocalFQTraining\" param=\"LocalNeuralNetwork weka.classifiers.functions.MultilayerPerceptron -CVPARAM M 1.5 2.5 3.0 L 0.2 0.4 3.0\" />\n");
93        configFile.append(" <trainer name=\"WekaLocalFQTraining\" param=\"LocalRBFNetwork weka.classifiers.functions.RBFNetwork -CVPARAM W 0.1 10.0 3.0 L 2.0 18.0 3.0\" />\n");
94        configFile.append(" <trainer name=\"WekaLocalFQTraining\" param=\"LocalSMORBF weka.classifiers.functions.SMO -K weka.classifiers.functions.supportVector.RBFKernel\" />\n");
95    }
96   
97    public static void trainersLASER(StringBuilder configFile) {
98        configFile.append(" <trainer name=\"WekaLASERTraining\" param=\"LASERRandomForest weka.classifiers.trees.RandomForest -CVPARAM I 5 25 5\" />\n");
99        configFile.append(" <trainer name=\"WekaLASERTraining\" param=\"LASERC4.5-DTree weka.classifiers.trees.J48 -CVPARAM C 0.1 0.3 5\" />\n");
100        configFile.append(" <trainer name=\"WekaLASERTraining\" param=\"LASERLogistic weka.classifiers.functions.Logistic\" />\n");
101        configFile.append(" <trainer name=\"WekaLASERTraining\" param=\"LASERNeuralNetwork weka.classifiers.functions.MultilayerPerceptron -CVPARAM M 1.5 2.5 3.0 L 0.2 0.4 3.0\" />\n");
102        configFile.append(" <trainer name=\"WekaLASERTraining\" param=\"LASERRBFNetwork weka.classifiers.functions.RBFNetwork -CVPARAM W 0.1 10.0 3.0 L 2.0 18.0 3.0\" />\n");
103        configFile.append(" <trainer name=\"WekaLASERTraining\" param=\"LASERSMORBF weka.classifiers.functions.SMO -K weka.classifiers.functions.supportVector.RBFKernel\" />\n");
104    }
105       
106    public static void dataset(StringBuilder configFile, Dataset dataset) {
107        switch (dataset)
108        {
109            case MDP:
110                configFile.append(" <loader name=\"NasaARFFFolderLoader\" datalocation=\"exp-mdp/data\" relative=\"false\"/>\n");
111                configFile.append(" <resultsPath path=\"exp-mdp/results\"/>\n");
112                break;
113            case JURECZKO:
114                configFile.append(" <loader name=\"CSVFolderLoader\" datalocation=\"exp-java/data\" relative=\"false\"/>\n");
115                configFile.append(" <resultsPath path=\"exp-java/results\"/>\n");
116                break;
117            default:
118                throw new InvalidParameterException("Unknown data set: " + dataset.toString());
119        }
120    }
121   
122    public static String Koshgoftaar2008(Dataset dataset) {
123        StringBuilder configFile = new StringBuilder();
124        preamble(configFile);
125        dataset(configFile, dataset);
126        trainersBagging(configFile);
127       
128        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
129       
130        postamble(configFile);
131        return configFile.toString();
132    }
133   
134    public static String Watanabe2008(Dataset dataset) {
135        StringBuilder configFile = new StringBuilder();
136        preamble(configFile);
137        dataset(configFile, dataset);
138        trainers(configFile);
139       
140        configFile.append(" <setwisepreprocessor name=\"AverageStandardization\" param=\"\" />\n");       
141        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
142       
143        postamble(configFile);
144        return configFile.toString();
145    }
146   
147    public static String Turhan2009(Dataset dataset) {
148        StringBuilder configFile = new StringBuilder();
149        preamble(configFile);
150        dataset(configFile, dataset);
151        trainers(configFile);
152       
153        configFile.append(" <preprocessor name=\"LogarithmTransform\" param=\"\" />\n");
154        configFile.append(" <pointwiseselector name=\"TurhanFilter\" param=\"10\" />\n");
155        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
156       
157        postamble(configFile);
158        return configFile.toString();
159    }
160   
161    public static String CamargoCruz2009(Dataset dataset) {
162        StringBuilder configFile = new StringBuilder();
163        preamble(configFile);
164        dataset(configFile, dataset);
165        trainers(configFile);
166       
167        configFile.append(" <preprocessor name=\"LogarithmTransform\" param=\"\" />\n");
168        configFile.append(" <preprocessor name=\"MedianAsReference\" param=\"10\" />\n");
169        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
170       
171        postamble(configFile);
172        return configFile.toString();
173    }
174   
175    // TODO Liu 2010
176   
177    public static String Menzies2011(Dataset dataset) {
178        StringBuilder configFile = new StringBuilder();
179        preamble(configFile);
180        dataset(configFile, dataset);
181       
182        trainersLocalWhere(configFile);       
183        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
184       
185        postamble(configFile);
186        return configFile.toString();
187    }
188   
189    public static String Ma2012(Dataset dataset) {
190        StringBuilder configFile = new StringBuilder();
191        preamble(configFile);
192        dataset(configFile, dataset);
193        trainers(configFile);
194       
195        configFile.append(" <preprocessor name=\"DataGravitation\" param=\"\" />\n");
196        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
197       
198        postamble(configFile);
199        return configFile.toString();
200    }
201   
202    public static String Peters2012(Dataset dataset) {
203        StringBuilder configFile = new StringBuilder();
204        preamble(configFile);
205        dataset(configFile, dataset);
206        trainers(configFile);
207       
208        configFile.append(" <preprocessor name=\"MORPH\" param=\"\" />\n");
209        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
210       
211        postamble(configFile);
212        return configFile.toString();
213    }
214   
215    public static String Uchigaki2012(Dataset dataset) {
216        StringBuilder configFile = new StringBuilder();
217        preamble(configFile);
218        dataset(configFile, dataset);
219       
220        configFile.append(" <preprocessor name=\"ZScoreNormalization\" param=\"\" />");
221        configFile.append(" <trainer name=\"WekaTraining\" param=\"LogisticEnsemble de.ugoe.cs.cpdp.wekaclassifier.LogisticEnsemble\" />\n");
222        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
223       
224        postamble(configFile);
225        return configFile.toString();
226    }
227   
228    // TODO Canfora 2013 (MODEP)
229   
230    public static String Peters2013(Dataset dataset) {
231        StringBuilder configFile = new StringBuilder();
232        preamble(configFile);
233        dataset(configFile, dataset);
234        trainers(configFile);
235       
236        configFile.append(" <preprocessor name=\"MORPH\" param=\"\" />\n");
237        configFile.append(" <pointwiseselector name=\"CLIFF\" param=\"0.10\" />");
238        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
239       
240        postamble(configFile);
241        return configFile.toString();
242    }
243   
244    public static String Herbold2013(Dataset dataset) {
245        StringBuilder configFile = new StringBuilder();
246        preamble(configFile);
247        dataset(configFile, dataset);
248        trainers(configFile);
249       
250        configFile.append(" <setwisepreprocessor name=\"Normalization\" param=\"\" />\n");
251        configFile.append(" <setwiseselector name=\"SetWiseEMClusterSelection\" param=\"mean stddev\" />\n");
252        configFile.append(" <postprocessor name=\"BiasedWeights\" param=\"0.5\" />\n");
253        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
254       
255        postamble(configFile);
256        return configFile.toString();
257    }
258   
259    public static String ZHe2013(Dataset dataset) {
260        StringBuilder configFile = new StringBuilder();
261        preamble(configFile);
262        dataset(configFile, dataset);
263        trainersBagging(configFile);
264       
265        configFile.append(" <setwisepreprocessor name=\"Normalization\" param=\"\" />\n");
266        configFile.append(" <setwiseselector name=\"SeparatabilitySelection\" param=\"\" />\n");
267        configFile.append(" <setwisepostprocessor name=\"Undersampling\" param=\"\" />\n");
268        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
269       
270        postamble(configFile);
271        return configFile.toString();
272    }
273   
274    public static String Nam2013(Dataset dataset) {
275        StringBuilder configFile = new StringBuilder();
276        preamble(configFile);
277        dataset(configFile, dataset);
278        trainers(configFile);
279       
280        configFile.append(" <preprocessor name=\"TCAPlusNormalization\" param=\"\" />\n");
281        configFile.append(" <postprocessor name=\"TransferComponentAnalysis\" param=\"\" />\n");
282        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
283       
284        postamble(configFile);
285        return configFile.toString();
286    }
287   
288    public static String Panichella2014(Dataset dataset) {
289        StringBuilder configFile = new StringBuilder();
290        preamble(configFile);
291        dataset(configFile, dataset);
292       
293        configFile.append(" <trainer name=\"WekaTraining\" param=\"LogisticCODEP de.ugoe.cs.cpdp.wekaclassifier.LogisticCODEP\" />\n");
294        configFile.append(" <trainer name=\"WekaTraining\" param=\"BayesNetCODEP de.ugoe.cs.cpdp.wekaclassifier.BayesNetCODEP\" />\n");
295        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
296       
297        postamble(configFile);
298        return configFile.toString();
299    }
300   
301    // TODO F.Zhang 2014
302   
303    // TODO Mizuno 2014: data not public
304   
305    // TODO Ryu 2014
306   
307    public static String PHe2015(Dataset dataset) {
308        StringBuilder configFile = new StringBuilder();
309        preamble(configFile);
310        dataset(configFile, dataset);
311        trainers(configFile);
312       
313        configFile.append(" <setwisepreprocessor name=\"LogarithmTransform\" param=\"\" />\n");
314        configFile.append(" <setwisepreprocessor name=\"TopMetricFilter\" param=\"\" />\n");
315        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
316       
317        postamble(configFile);
318        return configFile.toString();
319    }
320   
321    // TODO Peters 2015 (LACE2)
322   
323    // TODO Chen 2015
324   
325    public static String Kawata2015(Dataset dataset) {
326        StringBuilder configFile = new StringBuilder();
327        preamble(configFile);
328        dataset(configFile, dataset);
329        trainers(configFile);
330       
331        configFile.append(" <pointwiseselector name=\"DBSCANFilter\" param=\"\" />\n");
332        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
333       
334        postamble(configFile);
335        return configFile.toString();
336    }
337   
338    public static String YZhang2015(Dataset dataset) {
339        StringBuilder configFile = new StringBuilder();
340        preamble(configFile);
341        dataset(configFile, dataset);
342       
343        configFile.append(" <trainer name=\"WekaTraining\" param=\"AVGVote weka.classifiers.meta.Vote -S 1 -B &quot;weka.classifiers.trees.ADTree&quot; -B &quot;weka.classifiers.rules.DecisionTable&quot; -B &quot;weka.classifiers.bayes.BayesNet&quot; -B &quot;weka.classifiers.functions.MultilayerPerceptron&quot; -B &quot;weka.classifiers.functions.RBFNetwork&quot; -R AVG\" />\n");
344        configFile.append(" <trainer name=\"WekaTraining\" param=\"MAXVote weka.classifiers.meta.Vote -S 1 -B &quot;weka.classifiers.trees.ADTree&quot; -B &quot;weka.classifiers.rules.DecisionTable&quot; -B &quot;weka.classifiers.bayes.BayesNet&quot; -B &quot;weka.classifiers.functions.MultilayerPerceptron&quot; -B &quot;weka.classifiers.functions.RBFNetwork&quot; -R MAX\" />\n");
345        configFile.append(" <trainer name=\"WekaTraining\" param=\"BAGGINGC4.5 weka.classifiers.meta.Bagging -P 100 -S 1 -I 10 -W weka.classifiers.trees.J48\" />\n");
346        configFile.append(" <trainer name=\"WekaTraining\" param=\"BAGGINGNaiveBayes weka.classifiers.meta.Bagging -P 100 -S 1 -I 10 -W weka.classifiers.bayes.NaiveBayes\" />\n");
347        configFile.append(" <trainer name=\"WekaTraining\" param=\"BOOSTINGC4.5 weka.classifiers.meta.AdaBoostM1 -P 100 -S 1 -I 10 -W weka.classifiers.trees.J48\" />\n");
348        configFile.append(" <trainer name=\"WekaTraining\" param=\"BOOSTINGNaiveBayes weka.classifiers.meta.AdaBoostM1 -P 100 -S 1 -I 10 -W weka.classifiers.bayes.NaiveBayes\" />\n");
349        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
350       
351        postamble(configFile);
352        return configFile.toString();
353    }
354   
355    public static String Amasaki2015(Dataset dataset) {
356        StringBuilder configFile = new StringBuilder();
357        preamble(configFile);
358        dataset(configFile, dataset);
359        trainers(configFile);
360       
361        configFile.append(" <preprocessor name=\"LogarithmTransform\" param=\"\" />\n");
362        configFile.append(" <preprocessor name=\"SynonymAttributePruning\" param=\"\" />\n");
363        configFile.append(" <pointwiseselector name=\"SynonymOutlierRemoval\" param=\"\" />");
364        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
365       
366        postamble(configFile);
367        return configFile.toString();
368    }
369   
370    // TODO Amasaki 2015
371   
372    // TODO Ryu 2015a
373   
374    public static String Ryu2015b(Dataset dataset) {
375        StringBuilder configFile = new StringBuilder();
376        preamble(configFile);
377        dataset(configFile, dataset);
378        trainersLASER(configFile);
379       
380        configFile.append(" <pointwiseselector name=\"MahalanobisOutlierRemoval\" param=\"\" />\n");
381        configFile.append(" <pointwiseselector name=\"NeighborhoodFilter\" param=\"\" />\n");
382        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
383       
384        postamble(configFile);
385        return configFile.toString();
386    }
387   
388    // TODO Cao 2015
389   
390    public static String Nam2015b(Dataset dataset) {
391        StringBuilder configFile = new StringBuilder();
392        preamble(configFile);
393        dataset(configFile, dataset);
394        trainers(configFile);
395       
396        configFile.append(" <preprocessor name=\"CLAMIProcessor\" param=\"\" />\n");
397        configFile.append(" <eval name=\"NormalWekaEvaluation\" param=\"\" />\n");
398       
399        postamble(configFile);
400        return configFile.toString();
401    }
402}
Note: See TracBrowser for help on using the repository browser.