Rule induction using the current FIS

The rule induction methods presented here use a FIS configuration file. All existing FIS rules are ignored.

  1. FPA method

    Two C++ programs are required, genrules and fpa. In Java, they are combined in the FPA option (Learning menu, Induction submenu).They can also be used independently, by first generating the rules, then their conclusions.

    Java interface:

    Command lines:

  2. Wang & Mendel

    Java Interface:

    Learning menu, Rule induction submenu, wm option

    Command line

    The wm program requires the following arguments:

    Optional parameters:
     -tfile data file used for performance calculation (default is second argument)
     -oFIS the output FIS file name (default value 'system name'wm.fis).
     -sThresh activity threshold for performance calculation (default value=0.2)
     -l 'No limit for output distinct values in data file' (default=false)

    Command line example

    wm iriskmr.fis iris

    Creates the file iriswm.fis with 20 rules


    wm iriskmr.fis iris -owmiris.fis

    which creates the same file called wmiris.fis

  3. ols will be presented in the section 3.

  4. Fuzzy decision tree

    Java Interface: Learning menu, Rule induction submenu, Tree option

    Command line, :fistree program

    The fistree program requires two arguments and has several optional arguments.


    Optional parameters:
     -oNum where Num is the output number (Default Value: 0, first output)
     -sx where x is the minimum membership for an item to be considered as attracted by the node for entropy calculations (default value 0.2)
     -xCard where Card is the minimum leaf cardinality (default=min(10,#rows/10))
     -ty where y is the tolerance on the membership to the majority class (default value 0.1)
     -dn where n is the tree maximum depth (default value: 0, means no limit)
     -gval where val is the minimum relative entropy/deviance gain for splitting nodes (default value 1e-6)
     -e0 absolute entropy gain, -e1 relative gain (default=absolute)
     -gval where val is the minimum entropy/deviance relative gainen entropie/deviance required to create a branch
     -p0 no pruning, -p1 full split pruning according to a performance criterion, -p2 leaf pruning according to a performance criterion (default is no pruning)
     -lw where w is the relative performance loss tolerated during tree pruning (default value 0.0)
     -vValidFile where ValidFile is the validation file name for performance calculation during pruning (default is data file)
     -a detailed display
     -a0 semi detailed display

    Tree building, as well as tree pruning, creates two files. Output filenames are generated from the FIS configuration filename. The file with the .tree suffix contains a tree summary, which can be viewed in the java interface, or studied in a text editor. The second file is the corresponding FIS configuration file. It has a .fis suffix.

    A file called result.fistree is also created. It is similar to the file result.simple created by the fisimple program (see 5), with some extra information specific to fuzzy trees.

    The tree is a regression tree (used criterion=deviance) if the output declared in the FIS configuration file is fuzzy, with non discrete MFs. Otherwise it is a classification tree (used criterion=entropy), with inferred values corresponding to crisp classes if the output is crisp, with the flag classif=yes, or else to fuzzy classes.

    Command line example:

    fistree iriskmr.fis iris -s0.3

    Creates iriskmr.fis.sum.tree and iriskmr.fis.tree.fis, which has 9 rules.

    fistree iriskmr.fis iris -s0.1 -p1 -l0.1

    Creates the two files above, plus two files for the pruned tree, iriskmr.fis.prunedsum.tree and iriskmr.fis.prunedtree.fis. In this case, the minimum membership threshold is lower than in the previous example, which produces a tree with 34 rules before pruning and 4 after pruning.


    To generate the FIS configuration file corresponding to a given MF combination, two C++ programs are required, sethfpfis et hfpfis. In Java, they are combined in a single option.

    In C++: