13
13
* along with this program. If not, see <http://www.gnu.org/licenses/>.
14
14
*/
15
15
16
- /**
16
+ /*
17
17
* ExperimentExample.java
18
- * Copyright (C) 2015-2016 University of Waikato, Hamilton, NZ
18
+ * Copyright (C) 2015-2024 University of Waikato, Hamilton, NZ
19
19
*/
20
20
21
21
package mekaexamples .experiment ;
35
35
import meka .experiment .evaluators .CrossValidation ;
36
36
import meka .experiment .evaluators .RepeatedRuns ;
37
37
import meka .experiment .events .ExecutionStageEvent ;
38
- import meka .experiment .events .ExecutionStageListener ;
39
38
import meka .experiment .events .IterationNotificationEvent ;
40
- import meka .experiment .events .IterationNotificationListener ;
41
39
import meka .experiment .events .StatisticsNotificationEvent ;
42
- import meka .experiment .events .StatisticsNotificationListener ;
43
- import meka .experiment .statisticsexporters .EvaluationStatisticsExporter ;
44
- import meka .experiment .statisticsexporters .MultiExporter ;
45
- import meka .experiment .statisticsexporters .SimpleAggregate ;
46
- import meka .experiment .statisticsexporters .TabSeparated ;
47
- import meka .experiment .statisticsexporters .TabSeparatedMeasurement ;
40
+ import meka .experiment .statisticsexporters .*;
48
41
import weka .core .Utils ;
49
42
50
43
import java .io .File ;
56
49
* user-supplied datasets.
57
50
*
58
51
* @author FracPete (fracpete at waikato dot ac dot nz)
59
- * @version $Revision$
60
52
*/
61
53
public class ExperimentExample {
54
+
55
+ protected static String errorMsg (String error ) {
56
+ if (error == null )
57
+ return "success!" ;
58
+ else
59
+ return error ;
60
+ }
61
+
62
62
public static void main (String [] args ) throws Exception {
63
63
if (args .length == 0 )
64
64
throw new IllegalArgumentException ("Requirement arguments: <dataset1> [<dataset2> [...]]" );
@@ -69,70 +69,50 @@ public static void main(String[] args) throws Exception {
69
69
Experiment exp = new DefaultExperiment ();
70
70
// classifiers
71
71
exp .setClassifiers (new MultiLabelClassifier []{
72
- new BR (),
73
- new CC ()
72
+ new BR (),
73
+ new CC ()
74
74
});
75
75
// datasets
76
76
List <File > files = new ArrayList <>();
77
77
for (String f : args )
78
78
files .add (new File (f ));
79
79
LocalDatasetProvider dp1 = new LocalDatasetProvider ();
80
- dp1 .setDatasets (files .toArray (new File [files . size () ]));
80
+ dp1 .setDatasets (files .toArray (new File [0 ]));
81
81
LocalDatasetProvider dp2 = new LocalDatasetProvider ();
82
82
dp2 .setDatasets (new File []{
83
- new File ("src/main/data/solar_flare.arff" ),
83
+ new File ("src/main/data/solar_flare.arff" ),
84
84
});
85
85
MultiDatasetProvider mdp = new MultiDatasetProvider ();
86
86
mdp .setProviders (new DatasetProvider []{dp1 , dp2 });
87
87
exp .setDatasetProvider (mdp );
88
88
// output of metrics
89
- KeyValuePairs sh = new KeyValuePairs ();
90
- sh .setFile (new File (tmpDir + "/mekaexp.txt" ));
91
- sh .getFile ().delete (); // remove old run
92
- exp .setStatisticsHandler (sh );
89
+ KeyValuePairs kvp = new KeyValuePairs ();
90
+ kvp .setFile (new File (tmpDir + "/mekaexp.txt" ));
91
+ kvp .getFile ().delete (); // remove old run
92
+ exp .setStatisticsHandler (kvp );
93
93
// evaluation
94
94
RepeatedRuns eval = new RepeatedRuns ();
95
95
eval .setEvaluator (new CrossValidation ());
96
96
exp .setEvaluator (eval );
97
97
// stage
98
- exp .addExecutionStageListener (new ExecutionStageListener () {
99
- @ Override
100
- public void experimentStage (ExecutionStageEvent e ) {
101
- System .err .println ("[STAGE] " + e .getStage ());
102
- }
103
- });
98
+ exp .addExecutionStageListener ((ExecutionStageEvent e ) -> System .err .println ("[STAGE] " + e .getStage ()));
104
99
// iterations
105
- exp .addIterationNotificationListener (new IterationNotificationListener () {
106
- @ Override
107
- public void nextIteration (IterationNotificationEvent e ) {
108
- System .err .println ("[ITERATION] " + Utils .toCommandLine (e .getClassifier ()) + " --> " + e .getDataset ().relationName ());
109
- }
110
- });
100
+ exp .addIterationNotificationListener ((IterationNotificationEvent e ) -> System .err .println ("[ITERATION] " + Utils .toCommandLine (e .getClassifier ()) + " --> " + e .getDataset ().relationName ()));
111
101
// statistics
112
- exp .addStatisticsNotificationListener (new StatisticsNotificationListener () {
113
- @ Override
114
- public void statisticsAvailable (StatisticsNotificationEvent e ) {
115
- System .err .println ("[STATISTICS] #" + e .getStatistics ().size ());
116
- }
117
- });
102
+ exp .addStatisticsNotificationListener ((StatisticsNotificationEvent e ) -> System .err .println ("[STATISTICS] #" + e .getStatistics ().size ()));
118
103
// log events
119
- exp .addLogListener (new LogListener () {
120
- @ Override
121
- public void logMessage (LogEvent e ) {
122
- System .err .println ("[LOG] " + e .getSource ().getClass ().getName () + ": " + e .getMessage ());
123
- }
124
- });
104
+ exp .addLogListener ((LogEvent e ) -> System .err .println ("[LOG] " + e .getSource ().getClass ().getName () + ": " + e .getMessage ()));
125
105
// output options
126
106
System .out .println ("Setup:\n " + OptionUtils .toCommandLine (exp ) + "\n " );
127
107
// execute
128
108
String msg = exp .initialize ();
129
- System .out .println ("initialize: " + msg );
109
+ System .out .println ("initialize: " + errorMsg ( msg ) );
130
110
if (msg != null )
131
111
return ;
132
112
msg = exp .run ();
133
- System .out .println ("run: " + msg );
113
+ System .out .println ("run: " + errorMsg ( msg ) );
134
114
msg = exp .finish ();
135
- System .out .println ("finish: " + msg );
115
+ System .out .println ("finish: " + errorMsg ( msg ) );
136
116
// export them
137
117
TabSeparated tabsepAgg = new TabSeparated ();
138
118
tabsepAgg .setFile (new File (tmpDir + "/mekaexp-agg.tsv" ));
@@ -153,14 +133,9 @@ public void logMessage(LogEvent e) {
153
133
tabsepZOL .setFile (new File (tmpDir + "/mekaexp-ZOL.tsv" ));
154
134
MultiExporter multiexp = new MultiExporter ();
155
135
multiexp .setExporters (new EvaluationStatisticsExporter []{aggregate , tabsepFull , tabsepHL , tabsepZOL });
156
- multiexp .addLogListener (new LogListener () {
157
- @ Override
158
- public void logMessage (LogEvent e ) {
159
- System .err .println ("[EXPORT] " + e .getSource ().getClass ().getName () + ": " + e .getMessage ());
160
- }
161
- });
136
+ multiexp .addLogListener ((LogEvent e ) -> System .err .println ("[EXPORT] " + e .getSource ().getClass ().getName () + ": " + e .getMessage ()));
162
137
System .out .println (OptionUtils .toCommandLine (multiexp ));
163
138
msg = multiexp .export (exp .getStatistics ());
164
- System .out .println ("export: " + msg );
139
+ System .out .println ("export: " + errorMsg ( msg ) );
165
140
}
166
141
}
0 commit comments