Ignore:
Timestamp:
09/14/11 20:17:10 (13 years ago)
Author:
sherbold
Message:
  • refactored commands for the training of models (trainDFA, trainMarkovModel, trainPPM) by extracting one common abstract superclass

+ added command updateModel for model reinforcement

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDtrainPPM.java

    r171 r184  
    11package de.ugoe.cs.eventbench.commands; 
    22 
    3 import java.security.InvalidParameterException; 
    43import java.util.List; 
    54import java.util.Random; 
    65 
    7 import de.ugoe.cs.eventbench.data.Event; 
    8 import de.ugoe.cs.eventbench.data.GlobalDataContainer; 
    96import de.ugoe.cs.eventbench.models.PredictionByPartialMatch; 
    10 import de.ugoe.cs.util.console.Command; 
     7import de.ugoe.cs.eventbench.models.TrieBasedModel; 
    118import de.ugoe.cs.util.console.Console; 
    129 
     
    1714 *  
    1815 * @author Steffen Herbold 
    19  * @version 1.0 
     16 * @version 2.0 
    2017 */ 
    21 public class CMDtrainPPM implements Command { 
     18public class CMDtrainPPM extends AbstractTrainCommand { 
     19 
     20        /** 
     21         * <p> 
     22         * Escape probability of the PPM model. 
     23         * </p> 
     24         */ 
     25        double probEscape; 
     26 
     27        /** 
     28         * <p> 
     29         * Maximal Markov order of the PPM model. 
     30         * </p> 
     31         */ 
     32        int maxOrder; 
     33 
     34        /** 
     35         * <p> 
     36         * Minimal Markov order of the PPM model. Default: 0 
     37         * </p> 
     38         */ 
     39        int minOrder = 0; 
    2240 
    2341        /* 
     
    2846        @Override 
    2947        public void help() { 
    30                 Console.println("Usage: trainPPM <modelName> <probEscape> <maxOrder> {<minOrder>}"); 
     48                Console.println("Usage: trainPPM <modelName> <sequencesName> <probEscape> <maxOrder> {<minOrder>}"); 
     49        } 
     50 
     51        /** 
     52         * <p> 
     53         * Handles the parameters probEscape, maxOrder, and minOrder. 
     54         * </p> 
     55         *  
     56         * @see de.ugoe.cs.eventbench.commands.AbstractTrainCommand#handleOptionalParameters(java.util.List) 
     57         */ 
     58        @Override 
     59        void handleAdditionalParameters(List<Object> parameters) throws Exception { 
     60                probEscape = Double.parseDouble((String) parameters.get(2)); 
     61                maxOrder = Integer.parseInt((String) parameters.get(3)); 
     62                if (parameters.size() == 5) { 
     63                        minOrder = Integer.parseInt((String) parameters.get(4)); 
     64                } 
    3165        } 
    3266 
     
    3468         * (non-Javadoc) 
    3569         *  
    36          * @see de.ugoe.cs.util.console.Command#run(java.util.List) 
     70         * @see de.ugoe.cs.eventbench.commands.AbstractTrainCommand#createModel() 
    3771         */ 
    38         @SuppressWarnings("unchecked") 
    3972        @Override 
    40         public void run(List<Object> parameters) { 
    41                 String modelname; 
    42                 double probEscape; 
    43                 int maxOrder; 
    44                 int minOrder = 0; 
    45                 try { 
    46                         modelname = (String) parameters.get(0); 
    47                         probEscape = Double.parseDouble((String) parameters.get(1)); 
    48                         maxOrder = Integer.parseInt((String) parameters.get(2)); 
    49                         if (parameters.size() == 4) { 
    50                                 minOrder = Integer.parseInt((String) parameters.get(3)); 
    51                         } 
    52                 } catch (Exception e) { 
    53                         throw new InvalidParameterException(); 
    54                 } 
    55  
    56                 List<List<Event<?>>> sequences = null; 
    57                 Object dataObject = GlobalDataContainer.getInstance().getData( 
    58                                 "sequences"); 
    59  
    60                 try { 
    61                         sequences = (List<List<Event<?>>>) dataObject; 
    62                         if (sequences.size() > 0) { 
    63                                 if (sequences.get(0).get(0) instanceof Event) { 
    64                                         PredictionByPartialMatch model = new PredictionByPartialMatch( 
    65                                                         maxOrder, minOrder, new Random(), probEscape); 
    66                                         model.train(sequences); 
    67                                         if (GlobalDataContainer.getInstance().addData(modelname, 
    68                                                         model)) { 
    69                                                 Console.traceln("Old data \"" + modelname 
    70                                                                 + "\" overwritten"); 
    71                                         } 
    72                                 } else { 
    73                                         Console.traceln("Illegal use of \"sequences\" parameter in the GlobalDataContainer."); 
    74                                         Console.traceln("The parameter should always be of type List<List<Event>>!"); 
    75                                 } 
    76                         } 
    77                 } catch (ClassCastException e) { 
    78                         Console.println("Sequences need to be loaded first using parseXML"); 
    79                 } 
     73        TrieBasedModel createModel() { 
     74                return new PredictionByPartialMatch(maxOrder, minOrder, new Random(), 
     75                                probEscape); 
    8076        } 
    8177 
Note: See TracChangeset for help on using the changeset viewer.