Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/15/09 14:01:47 (16 years ago)
Author:
gkronber
Message:

Moved common (not algorithm specific) model analyzer code (same operator tree in all regression/classification/time-series-prognosis engines) to HL.Modeling. #625, #705, #739.

Location:
trunk/sources/HeuristicLab.LinearRegression/3.2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/sources/HeuristicLab.LinearRegression/3.2/LinearClassification.cs

    r2353 r2356  
    3838
    3939namespace HeuristicLab.LinearRegression {
    40   public class LinearClassification : LinearRegression {
     40  public class LinearClassification : LinearRegression, IClassificationAlgorithm {
    4141
    4242    public override string Name { get { return "LinearClassification"; } }
     
    4646    }
    4747
    48     protected override IOperator CreateModelAnalyser() {
    49       return DefaultClassificationAlgorithmOperators.CreatePostProcessingOperator();
     48    protected override IOperator CreateProblemInjector() {
     49      return DefaultClassificationOperators.CreateProblemInjector();
     50    }
     51
     52    protected override IOperator CreateModelAnalyzerOperator() {
     53      return DefaultClassificationOperators.CreatePostProcessingOperator();
    5054    }
    5155
    5256    protected internal virtual IAnalyzerModel CreateLRModel(IScope bestModelScope) {
    53       IAnalyzerModel model = base.CreateLRModel(bestModelScope);
    54       DefaultClassificationAlgorithmOperators.SetModelData(model, bestModelScope);
     57      var model = new AnalyzerModel();
     58      DefaultClassificationOperators.PopulateAnalyzerModel(bestModelScope, model);
    5559      return model;
    5660    }
  • TabularUnified trunk/sources/HeuristicLab.LinearRegression/3.2/LinearRegression.cs

    r2353 r2356  
    8787      CombinedOperator algo = new CombinedOperator();
    8888      SequentialProcessor seq = new SequentialProcessor();
    89       algo.Name = "LinearRegression";
    90       seq.Name = "LinearRegression";
    91 
    92       var randomInjector = new RandomInjector();
    93       randomInjector.Name = "Random Injector";
     89      algo.Name = Name;
     90      seq.Name = Name;
     91
    9492      IOperator globalInjector = CreateGlobalInjector();
    95       ProblemInjector problemInjector = new ProblemInjector();
    96       problemInjector.GetVariableInfo("MaxNumberOfTrainingSamples").Local = true;
    97       problemInjector.AddVariable(new HeuristicLab.Core.Variable("MaxNumberOfTrainingSamples", new IntData(5000)));
    98 
    99       HL2TreeEvaluatorInjector treeEvaluatorInjector = new HL2TreeEvaluatorInjector();
    100 
    101       IOperator shuffler = new DatasetShuffler();
    102       shuffler.GetVariableInfo("ShuffleStart").ActualName = "TrainingSamplesStart";
    103       shuffler.GetVariableInfo("ShuffleEnd").ActualName = "TrainingSamplesEnd";
     93
     94      HL3TreeEvaluatorInjector treeEvaluatorInjector = new HL3TreeEvaluatorInjector();
     95
    10496
    10597      LinearRegressionOperator lrOperator = new LinearRegressionOperator();
     
    10799      lrOperator.GetVariableInfo("SamplesEnd").ActualName = "ActualTrainingSamplesEnd";
    108100
    109       seq.AddSubOperator(randomInjector);
    110       seq.AddSubOperator(problemInjector);
    111101      seq.AddSubOperator(globalInjector);
     102      seq.AddSubOperator(new RandomInjector());
     103      seq.AddSubOperator(CreateProblemInjector());
    112104      seq.AddSubOperator(treeEvaluatorInjector);
    113       seq.AddSubOperator(shuffler);
    114105      seq.AddSubOperator(lrOperator);
    115       seq.AddSubOperator(CreateModelAnalyser());
     106      seq.AddSubOperator(CreatePostProcessingOperator());
    116107
    117108      algo.OperatorGraph.InitialOperator = seq;
     
    119110
    120111      return algo;
     112    }
     113
     114    protected virtual IOperator CreateProblemInjector() {
     115      return DefaultRegressionOperators.CreateProblemInjector();
    121116    }
    122117
     
    129124    }
    130125
    131     protected virtual IOperator CreateModelAnalyser() {
     126    protected virtual IOperator CreatePostProcessingOperator() {
    132127      CombinedOperator op = new CombinedOperator();
    133       op.AddVariableInfo(new VariableInfo("FunctionTree", "The model to analyze", typeof(IGeneticProgrammingModel), VariableKind.In));
    134128      op.Name = "Model Analyzer";
    135       op.GetVariableInfo("FunctionTree").ActualName = "LinearRegressionModel";
    136 
    137       IOperator maOp = DefaultStructureIdentificationAlgorithmOperators.CreatePostProcessingOperator();
    138       op.OperatorGraph.AddOperator(maOp);
    139       op.OperatorGraph.InitialOperator = maOp;
     129
     130      SequentialProcessor seq = new SequentialProcessor();
     131      HL3TreeEvaluatorInjector evaluatorInjector = new HL3TreeEvaluatorInjector();
     132      evaluatorInjector.AddVariable(new HeuristicLab.Core.Variable("PunishmentFactor", new DoubleData(1000.0)));
     133      evaluatorInjector.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator";
     134
     135      #region simple evaluators
     136      SimpleEvaluator trainingEvaluator = new SimpleEvaluator();
     137      trainingEvaluator.Name = "TrainingEvaluator";
     138      trainingEvaluator.GetVariableInfo("FunctionTree").ActualName = "LinearRegressionModel";
     139      trainingEvaluator.GetVariableInfo("SamplesStart").ActualName = "TrainingSamplesStart";
     140      trainingEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TrainingSamplesEnd";
     141      trainingEvaluator.GetVariableInfo("Values").ActualName = "TrainingValues";
     142      trainingEvaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator";
     143      SimpleEvaluator validationEvaluator = new SimpleEvaluator();
     144      validationEvaluator.Name = "ValidationEvaluator";
     145      validationEvaluator.GetVariableInfo("FunctionTree").ActualName = "LinearRegressionModel";
     146      validationEvaluator.GetVariableInfo("SamplesStart").ActualName = "ValidationSamplesStart";
     147      validationEvaluator.GetVariableInfo("SamplesEnd").ActualName = "ValidationSamplesEnd";
     148      validationEvaluator.GetVariableInfo("Values").ActualName = "ValidationValues";
     149      validationEvaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator";
     150      SimpleEvaluator testEvaluator = new SimpleEvaluator();
     151      testEvaluator.Name = "TestEvaluator";
     152      testEvaluator.GetVariableInfo("FunctionTree").ActualName = "LinearRegressionModel";
     153      testEvaluator.GetVariableInfo("SamplesStart").ActualName = "TestSamplesStart";
     154      testEvaluator.GetVariableInfo("SamplesEnd").ActualName = "TestSamplesEnd";
     155      testEvaluator.GetVariableInfo("Values").ActualName = "TestValues";
     156      testEvaluator.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator";
     157      seq.AddSubOperator(evaluatorInjector);
     158      seq.AddSubOperator(trainingEvaluator);
     159      seq.AddSubOperator(validationEvaluator);
     160      seq.AddSubOperator(testEvaluator);
     161      #endregion
     162
     163      #region variable impacts
     164      // calculate and set variable impacts
     165      VariableNamesExtractor namesExtractor = new VariableNamesExtractor();
     166      namesExtractor.GetVariableInfo("VariableNames").ActualName = "InputVariableNames";
     167      namesExtractor.GetVariableInfo("FunctionTree").ActualName = "LinearRegressionModel";
     168
     169      PredictorBuilder predictorBuilder = new PredictorBuilder();
     170      predictorBuilder.GetVariableInfo("TreeEvaluator").ActualName = "ModelAnalysisTreeEvaluator";
     171      predictorBuilder.GetVariableInfo("FunctionTree").ActualName = "LinearRegressionModel";
     172
     173      seq.AddSubOperator(namesExtractor);
     174      seq.AddSubOperator(predictorBuilder);
     175      #endregion
     176
     177      seq.AddSubOperator(CreateModelAnalyzerOperator());
     178
     179      op.OperatorGraph.AddOperator(seq);
     180      op.OperatorGraph.InitialOperator = seq;
    140181      return op;
    141182    }
    142183
     184    protected virtual IOperator CreateModelAnalyzerOperator() {
     185      return DefaultRegressionOperators.CreatePostProcessingOperator();
     186    }
     187
    143188    protected virtual IAnalyzerModel CreateLRModel(IScope bestModelScope) {
    144       return DefaultStructureIdentificationAlgorithmOperators.CreateGPModel(bestModelScope);
     189      var model = new AnalyzerModel();
     190      DefaultRegressionOperators.PopulateAnalyzerModel(bestModelScope, model);
     191      return model;
    145192    }
    146193
Note: See TracChangeset for help on using the changeset viewer.