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

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