To use Ensembles of Hierarchically Nested Dichotomies call:
java -cp [dir/]wekaEHND.jar weka.classifiers.meta.END -t <training.arff> -T <test.arff> -I <ensemble-members> -W weka.classifiers.meta.HND -- -H <hierarchy> [-L <properties.txt>] [-P <hierarchy-parser>] -- -W <base-learner> -- <parameter for base learner>
Usually 20 is a sufficient number of ensemble-members.
The format required at this place depends on the specified hierarchy-parser. By default (no need to specify -P), a file is expected that contains a line as
% @hierarchy <hierarchy-string>
<hierarchy-string> describes a hierarchy of classes by a nesting of lists. Consider e.g. classes A,B,C,D,E are to be represented as a hierarchy were A and B belong to superclass AB, and C, D and E belong to superclass CDE. The respective <hierarchy-string> in that case should be: {{A,B},{C,D,E}}. This hierarchy must comprise a set of classes, that is identical to the set in training (and test) data. Since the line starts with a weka comment %, it could also be given in an arff file. The keyword @hierarchy is, however, not supported, so the line will be erased, if the data are rewritten out of an instance of the Instances class (e.g. after filtering).
The class HND employs ND as base learner automatically. For this ND the base learner may in turn be specified later (by -W). It is also possible to specify properties of the employed NDs levelwise. Furthermore there may be a levelwise feature-selection specified. This is both done in a property-file specified in this option. Feature-selection employs the weka filter Remove. The file may have entries like this:
remove0=-R 22-126
remove1=-R 1-21,43-126
level0=-W weka.classifiers.functions.SMO -- -M -V 10 -R -C 8.0 -G 0.098
level1=-W weka.classifiers.functions.SMO -- -M -V 10 -R -C 64.0 -G 0.096
So for classification at level 0 of the hierarchy the features 22-126 will be removed as specified in line remove0, the base learner will be SMO with specified options in line level0. For classification at level 1 of the hierarchy the features 1-21 and 43-126 will be removed and so on. The strings on the right hand side are partially weka-option strings, as to be given to Remove (removen) or ND (leveln). You could also specify general options for NDs on all levels in the option string passed to the base learner of HND, and overwrite just some (or none) levels in this property-file. This is optional.
You could specify another hierarchy-parser. Plugging in your own parser, implement the interface weka.core.converters.ClassHierarchyParser.
You could employ almost any base learner. It should, however, provide distributions of class probability estimations.