Ignore:
Timestamp:
07/18/16 12:26:03 (8 years ago)
Author:
sherbold
Message:
  • code documentation and formatting
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrossPare/src/de/ugoe/cs/cpdp/training/WekaLASERTraining.java

    r91 r135  
    2424import weka.core.Instances; 
    2525 
    26  
    2726/** 
    2827 * <p> 
    29  * TODO comment 
     28 * Implements training following the LASER classification scheme. 
    3029 * </p> 
    3130 *  
     
    3433public class WekaLASERTraining extends WekaBaseTraining implements ITrainingStrategy { 
    3534 
     35    /** 
     36     * Internal classifier used for LASER. 
     37     */ 
    3638    private final LASERClassifier internalClassifier = new LASERClassifier(); 
    3739 
     40    /* 
     41     * (non-Javadoc) 
     42     *  
     43     * @see de.ugoe.cs.cpdp.training.WekaBaseTraining#getClassifier() 
     44     */ 
    3845    @Override 
    3946    public Classifier getClassifier() { 
     
    4148    } 
    4249 
     50    /* 
     51     * (non-Javadoc) 
     52     *  
     53     * @see de.ugoe.cs.cpdp.training.ITrainingStrategy#apply(weka.core.Instances) 
     54     */ 
    4355    @Override 
    4456    public void apply(Instances traindata) { 
     
    5163    } 
    5264 
     65    /** 
     66     * <p> 
     67     * Internal helper class that defines the laser classifier. 
     68     * </p> 
     69     *  
     70     * @author Steffen Herbold 
     71     */ 
    5372    public class LASERClassifier extends AbstractClassifier { 
    5473 
     74        /** 
     75         * Default serial ID. 
     76         */ 
    5577        private static final long serialVersionUID = 1L; 
    56          
     78 
     79        /** 
     80         * Internal reference to the classifier. 
     81         */ 
    5782        private Classifier laserClassifier = null; 
     83 
     84        /** 
     85         * Internal storage of the training data required for NN analysis. 
     86         */ 
    5887        private Instances traindata = null; 
    5988 
     89        /* 
     90         * (non-Javadoc) 
     91         *  
     92         * @see weka.classifiers.AbstractClassifier#classifyInstance(weka.core.Instance) 
     93         */ 
    6094        @Override 
    6195        public double classifyInstance(Instance instance) throws Exception { 
    6296            List<Integer> closestInstances = new LinkedList<>(); 
    6397            double minDistance = Double.MAX_VALUE; 
    64             for( int i=0; i<traindata.size(); i++ ) { 
     98            for (int i = 0; i < traindata.size(); i++) { 
    6599                double distance = WekaUtils.hammingDistance(instance, traindata.get(i)); 
    66                 if( distance<minDistance) { 
     100                if (distance < minDistance) { 
    67101                    minDistance = distance; 
    68102                } 
    69103            } 
    70             for( int i=0; i<traindata.size(); i++ ) { 
     104            for (int i = 0; i < traindata.size(); i++) { 
    71105                double distance = WekaUtils.hammingDistance(instance, traindata.get(i)); 
    72                 if( distance<=minDistance ) { 
     106                if (distance <= minDistance) { 
    73107                    closestInstances.add(i); 
    74108                } 
    75109            } 
    76             if( closestInstances.size()==1 ) { 
     110            if (closestInstances.size() == 1) { 
    77111                int closestIndex = closestInstances.get(0); 
    78112                Instance closestTrainingInstance = traindata.get(closestIndex); 
    79113                List<Integer> closestToTrainingInstance = new LinkedList<>(); 
    80114                double minTrainingDistance = Double.MAX_VALUE; 
    81                 for( int i=0; i<traindata.size(); i++ ) { 
    82                     if( closestIndex!=i ) { 
    83                         double distance = WekaUtils.hammingDistance(closestTrainingInstance, traindata.get(i)); 
    84                         if( distance<minTrainingDistance ) { 
     115                for (int i = 0; i < traindata.size(); i++) { 
     116                    if (closestIndex != i) { 
     117                        double distance = 
     118                            WekaUtils.hammingDistance(closestTrainingInstance, traindata.get(i)); 
     119                        if (distance < minTrainingDistance) { 
    85120                            minTrainingDistance = distance; 
    86121                        } 
    87122                    } 
    88123                } 
    89                 for( int i=0; i<traindata.size(); i++ ) { 
    90                     if( closestIndex!=i ) { 
    91                         double distance = WekaUtils.hammingDistance(closestTrainingInstance, traindata.get(i)); 
    92                         if( distance<=minTrainingDistance ) { 
     124                for (int i = 0; i < traindata.size(); i++) { 
     125                    if (closestIndex != i) { 
     126                        double distance = 
     127                            WekaUtils.hammingDistance(closestTrainingInstance, traindata.get(i)); 
     128                        if (distance <= minTrainingDistance) { 
    93129                            closestToTrainingInstance.add(i); 
    94130                        } 
    95131                    } 
    96132                } 
    97                 if( closestToTrainingInstance.size()==1 ) { 
     133                if (closestToTrainingInstance.size() == 1) { 
    98134                    return laserClassifier.classifyInstance(instance); 
    99135                } 
     
    101137                    double label = Double.NaN; 
    102138                    boolean allEqual = true; 
    103                     for( Integer index : closestToTrainingInstance ) { 
    104                         if( Double.isNaN(label) ) { 
     139                    for (Integer index : closestToTrainingInstance) { 
     140                        if (Double.isNaN(label)) { 
    105141                            label = traindata.get(index).classValue(); 
    106142                        } 
    107                         else if( label!=traindata.get(index).classValue() ) { 
     143                        else if (label != traindata.get(index).classValue()) { 
    108144                            allEqual = false; 
    109145                            break; 
    110146                        } 
    111147                    } 
    112                     if( allEqual ) { 
     148                    if (allEqual) { 
    113149                        return label; 
    114150                    } 
     
    117153                    } 
    118154                } 
    119             } else { 
     155            } 
     156            else { 
    120157                double label = Double.NaN; 
    121158                boolean allEqual = true; 
    122                 for( Integer index : closestInstances ) { 
    123                     if( Double.isNaN(label) ) { 
     159                for (Integer index : closestInstances) { 
     160                    if (Double.isNaN(label)) { 
    124161                        label = traindata.get(index).classValue(); 
    125162                    } 
    126                     else if( label!=traindata.get(index).classValue() ) { 
     163                    else if (label != traindata.get(index).classValue()) { 
    127164                        allEqual = false; 
    128165                        break; 
    129166                    } 
    130167                } 
    131                 if( allEqual ) { 
     168                if (allEqual) { 
    132169                    return label; 
    133170                } 
     
    138175        } 
    139176 
     177        /* 
     178         * (non-Javadoc) 
     179         *  
     180         * @see weka.classifiers.Classifier#buildClassifier(weka.core.Instances) 
     181         */ 
    140182        @Override 
    141183        public void buildClassifier(Instances traindata) throws Exception { 
Note: See TracChangeset for help on using the changeset viewer.