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

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