Free cookie consent management tool by TermsFeed Policy Generator

Changeset 363


Ignore:
Timestamp:
07/04/08 17:30:24 (16 years ago)
Author:
gkronber
Message:
  • implemented operator to store the best of run solution, in regard of a specific fitness variable).
  • adapted struct-id infrastructure to allow evaluation of models on validation data.

ticket #194

Location:
trunk/sources
Files:
2 added
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.DataAnalysis/DatasetParser.cs

    r273 r363  
    3535    private const string TRAININGSAMPLESSTART = "TRAININGSAMPLESSTART";
    3636    private const string TRAININGSAMPLESEND = "TRAININGSAMPLESEND";
     37    private const string VALIDATIONSAMPLESSTART = "VALIDATIONSAMPLESSTART";
     38    private const string VALIDATIONSAMPLESEND = "VALIDATIONSAMPLESEND";
    3739    private Tokenizer tokenizer;
    3840    private Dictionary<string, List<Token>> metadata;
     
    121123        if(metadata.ContainsKey(TRAININGSAMPLESEND)) {
    122124          return metadata[TRAININGSAMPLESEND][0].intValue;
     125        } else return rows;
     126      }
     127    }
     128    public int ValidationSamplesStart {
     129      get {
     130        if(metadata.ContainsKey(VALIDATIONSAMPLESSTART)) {
     131          return metadata[VALIDATIONSAMPLESSTART][0].intValue;
     132        } else return 0;
     133      }
     134    }
     135
     136    public int ValidationSamplesEnd {
     137      get {
     138        if(metadata.ContainsKey(VALIDATIONSAMPLESEND)) {
     139          return metadata[VALIDATIONSAMPLESEND][0].intValue;
    123140        } else return rows;
    124141      }
  • trunk/sources/HeuristicLab.Functions/BakedFunctionTree.cs

    r344 r363  
    262262    }
    263263
    264     bool evaluatorReset = false;
    265     public double Evaluate(Dataset dataset, int sampleIndex) {
     264    public void PrepareEvaluation(Dataset dataset) {
    266265      FlattenVariables();
    267266      FlattenTrees();
    268       if(!evaluatorReset) {
    269         BakedTreeEvaluator.ResetEvaluator(linearRepresentation);
    270         evaluatorReset = true;
    271       }
    272       return BakedTreeEvaluator.Evaluate(dataset, sampleIndex);
     267      BakedTreeEvaluator.ResetEvaluator(dataset, linearRepresentation);
     268    }
     269
     270    public double Evaluate(int sampleIndex) {
     271      return BakedTreeEvaluator.Evaluate(sampleIndex);
    273272    }
    274273
  • trunk/sources/HeuristicLab.Functions/BakedTreeEvaluator.cs

    r322 r363  
    5353    }
    5454
    55     public static void ResetEvaluator(List<LightWeightFunction> linearRepresentation) {
     55    public static void ResetEvaluator(Dataset dataset, List<LightWeightFunction> linearRepresentation) {
    5656      int i = 0;
     57      BakedTreeEvaluator.dataset = dataset;
    5758      foreach(LightWeightFunction f in linearRepresentation) {
    5859        TranslateToInstr(f, codeArr[i++]);
     
    7879    }
    7980
    80     internal static double Evaluate(Dataset dataset, int sampleIndex) {
     81    internal static double Evaluate(int sampleIndex) {
    8182      PC = 0;
    8283      BakedTreeEvaluator.sampleIndex = sampleIndex;
    83       BakedTreeEvaluator.dataset = dataset;
    8484      return EvaluateBakedCode();
    8585    }
  • trunk/sources/HeuristicLab.Functions/IFunctionTree.cs

    r324 r363  
    4040    void RemoveSubTree(int index);
    4141
    42     double Evaluate(Dataset dataset, int sampleIndex);
     42    void PrepareEvaluation(Dataset dataset);
     43    double Evaluate(int sampleIndex);
    4344  }
    4445}
  • trunk/sources/HeuristicLab.Logging/HeuristicLab.Logging.csproj

    r358 r363  
    4646  <ItemGroup>
    4747    <Compile Include="BestAverageWorstQualityCalculator.cs" />
     48    <Compile Include="BestSolutionStorer.cs" />
    4849    <Compile Include="Logger.cs" />
    4950    <Compile Include="Linechart.cs" />
  • trunk/sources/HeuristicLab.StructureIdentification/Evaluation/CoefficientOfDeterminationEvaluator.cs

    r155 r363  
    4747      double originalDeviationTotalSumOfSquares = 0.0;
    4848      double targetMean = dataset.GetMean(targetVariable);
     49      functionTree.PrepareEvaluation(dataset);
    4950      for(int sample = 0; sample < dataset.Rows; sample++) {
    50         double estimated = functionTree.Evaluate(dataset, sample);
     51        double estimated = functionTree.Evaluate(sample);
    5152        double original = dataset.GetValue(sample, targetVariable);
    5253        if(!double.IsNaN(original) && !double.IsInfinity(original)) {
  • trunk/sources/HeuristicLab.StructureIdentification/Evaluation/EarlyStoppingMeanSquaredErrorEvaluator.cs

    r334 r363  
    6060      double errorsSquaredSum = 0;
    6161      double targetMean = dataset.GetMean(targetVariable);
     62      functionTree.PrepareEvaluation(dataset);
    6263      for(int sample = trainingStart; sample < trainingEnd; sample++) {
    63         double estimated = functionTree.Evaluate(dataset, sample);
     64        double estimated = functionTree.Evaluate(sample);
    6465        double original = dataset.GetValue(sample, targetVariable);
    6566        if(double.IsNaN(estimated) || double.IsInfinity(estimated)) {
  • trunk/sources/HeuristicLab.StructureIdentification/Evaluation/GPEvaluatorBase.cs

    r334 r363  
    5757      this.totalEvaluatedNodes = scope.GetVariableValue<DoubleData>("TotalEvaluatedNodes", true).Data;
    5858      double result = Evaluate(scope, functionTree, targetVariable, dataset);
    59       scope.AddVariable(new HeuristicLab.Core.Variable(scope.TranslateName("Quality"), new DoubleData(result)));
     59
     60      DoubleData quality = GetVariableValue<DoubleData>("Quality", scope, false, false);
     61      if(quality == null) {
     62        scope.AddVariable(new HeuristicLab.Core.Variable(scope.TranslateName("Quality"), new DoubleData(result)));
     63      } else {
     64        quality.Data = result;
     65      }
     66
    6067      return null;
    6168    }
  • trunk/sources/HeuristicLab.StructureIdentification/Evaluation/MCCEvaluator.cs

    r191 r363  
    5454      double negative = 0;
    5555      double targetMean = dataset.GetMean(targetVariable);
     56      functionTree.PrepareEvaluation(dataset);
    5657      for(int sample = 0; sample < dataset.Rows; sample++) {
    57         double est = functionTree.Evaluate(dataset, sample);
     58        double est = functionTree.Evaluate(sample);
    5859        double orig = dataset.GetValue(sample, targetVariable);
    5960        if(double.IsNaN(est) || double.IsInfinity(est)) {
  • trunk/sources/HeuristicLab.StructureIdentification/Evaluation/MeanSquaredErrorEvaluator.cs

    r334 r363  
    6060      }
    6161
     62      functionTree.PrepareEvaluation(dataset);
    6263      for(int sample = trainingStart; sample < trainingEnd; sample++) {
    63         double estimated = functionTree.Evaluate(dataset, sample);
     64        double estimated = functionTree.Evaluate(sample);
    6465        double original = dataset.GetValue(sample, targetVariable);
    6566        if(double.IsNaN(estimated) || double.IsInfinity(estimated)) {
  • trunk/sources/HeuristicLab.StructureIdentification/Evaluation/VarianceAccountedForEvaluator.cs

    r155 r363  
    5757      double[] originalTargetVariableValues = new double[dataset.Rows];
    5858      double targetMean = dataset.GetMean(targetVariable);
     59      functionTree.PrepareEvaluation(dataset);
    5960      for(int sample = 0; sample < dataset.Rows; sample++) {
    60         double estimated = functionTree.Evaluate(dataset, sample);
     61        double estimated = functionTree.Evaluate(sample);
    6162        double original = dataset.GetValue(sample, targetVariable);
    6263        if(!double.IsNaN(original) && !double.IsInfinity(original)) {
  • trunk/sources/HeuristicLab.StructureIdentification/HeuristicLab.StructureIdentification.csproj

    r358 r363  
    4848  </ItemGroup>
    4949  <ItemGroup>
     50    <Compile Include="Evaluation\SimpleEvaluator.cs" />
    5051    <Compile Include="ProbabilisticTreeCreator.cs" />
    5152    <Compile Include="Evaluation\CoefficientOfDeterminationEvaluator.cs" />
  • trunk/sources/HeuristicLab.StructureIdentification/StructIdProblemInjector.cs

    r172 r363  
    4141      AddVariableInfo(new VariableInfo("TargetVariable", "TargetVariable", typeof(IntData), VariableKind.New));
    4242      AddVariable(new Variable("TargetVariable", new IntData()));
     43      AddVariableInfo(new VariableInfo("TrainingSamplesStart", "TrainingSamplesStart", typeof(IntData), VariableKind.New));
     44      AddVariable(new Variable("TrainingSamplesStart", new IntData()));
     45      AddVariableInfo(new VariableInfo("TrainingSamplesEnd", "TrainingSamplesEnd", typeof(IntData), VariableKind.New));
     46      AddVariable(new Variable("TrainingSamplesEnd", new IntData()));
     47      AddVariableInfo(new VariableInfo("ValidationSamplesStart", "ValidationSamplesStart", typeof(IntData), VariableKind.New));
     48      AddVariable(new Variable("ValidationSamplesStart", new IntData()));
     49      AddVariableInfo(new VariableInfo("ValidationSamplesEnd", "ValidationSamplesEnd", typeof(IntData), VariableKind.New));
     50      AddVariable(new Variable("ValidationSamplesEnd", new IntData()));
    4351    }
    4452
     
    5058      scope.AddVariable(new Variable(scope.TranslateName("Dataset"), (IItem)GetVariable("Dataset").Value.Clone()));
    5159      scope.AddVariable(new Variable(scope.TranslateName("TargetVariable"), (IItem)GetVariable("TargetVariable").Value.Clone()));
     60      scope.AddVariable(new Variable(scope.TranslateName("TrainingSamplesStart"), (IItem)GetVariable("TrainingSamplesStart").Value.Clone()));
     61      scope.AddVariable(new Variable(scope.TranslateName("TrainingSamplesEnd"), (IItem)GetVariable("TrainingSamplesEnd").Value.Clone()));
     62      scope.AddVariable(new Variable(scope.TranslateName("ValidationSamplesStart"), (IItem)GetVariable("ValidationSamplesStart").Value.Clone()));
     63      scope.AddVariable(new Variable(scope.TranslateName("ValidationSamplesEnd"), (IItem)GetVariable("ValidationSamplesEnd").Value.Clone()));
    5264      return null;
    5365    }
  • trunk/sources/HeuristicLab.StructureIdentification/StructIdProblemInjectorView.Designer.cs

    r168 r363  
    5151      this.variableInfosTabPage = new System.Windows.Forms.TabPage();
    5252      this.operatorBaseVariableInfosView = new HeuristicLab.Core.OperatorBaseVariableInfosView();
     53      this.tabPage1 = new System.Windows.Forms.TabPage();
     54      this.operatorBaseVariablesView = new HeuristicLab.Core.OperatorBaseVariablesView();
    5355      this.descriptionTabPage = new System.Windows.Forms.TabPage();
    5456      this.operatorBaseDescriptionView = new HeuristicLab.Core.OperatorBaseDescriptionView();
     
    5759      this.dataTabPage.SuspendLayout();
    5860      this.variableInfosTabPage.SuspendLayout();
     61      this.tabPage1.SuspendLayout();
    5962      this.descriptionTabPage.SuspendLayout();
    6063      this.SuspendLayout();
     
    8184      this.tabControl.Controls.Add(this.dataTabPage);
    8285      this.tabControl.Controls.Add(this.variableInfosTabPage);
     86      this.tabControl.Controls.Add(this.tabPage1);
    8387      this.tabControl.Controls.Add(this.descriptionTabPage);
    8488      this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill;
     
    122126      this.operatorBaseVariableInfosView.TabIndex = 0;
    123127      //
     128      // tabPage1
     129      //
     130      this.tabPage1.Controls.Add(this.operatorBaseVariablesView);
     131      this.tabPage1.Location = new System.Drawing.Point(4, 22);
     132      this.tabPage1.Name = "tabPage1";
     133      this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
     134      this.tabPage1.Size = new System.Drawing.Size(499, 425);
     135      this.tabPage1.TabIndex = 3;
     136      this.tabPage1.Text = "Variables";
     137      this.tabPage1.UseVisualStyleBackColor = true;
     138      //
     139      // operatorBaseVariablesView
     140      //
     141      this.operatorBaseVariablesView.Caption = "Operator";
     142      this.operatorBaseVariablesView.Dock = System.Windows.Forms.DockStyle.Fill;
     143      this.operatorBaseVariablesView.Location = new System.Drawing.Point(3, 3);
     144      this.operatorBaseVariablesView.Name = "operatorBaseVariablesView";
     145      this.operatorBaseVariablesView.Operator = null;
     146      this.operatorBaseVariablesView.Size = new System.Drawing.Size(493, 419);
     147      this.operatorBaseVariablesView.TabIndex = 0;
     148      //
    124149      // descriptionTabPage
    125150      //
     
    143168      this.operatorBaseDescriptionView.TabIndex = 0;
    144169      //
    145       // datasetView
     170      // datasetView1
    146171      //
    147172      this.datasetView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
    148173                  | System.Windows.Forms.AnchorStyles.Left)
    149174                  | System.Windows.Forms.AnchorStyles.Right)));
    150       this.datasetView.Caption = "View";
     175      this.datasetView.Caption = "Editor";
     176      this.datasetView.Dataset = null;
     177      this.datasetView.Filename = null;
    151178      this.datasetView.Location = new System.Drawing.Point(6, 33);
    152       this.datasetView.Name = "datasetView";
     179      this.datasetView.Name = "datasetView1";
    153180      this.datasetView.Size = new System.Drawing.Size(487, 386);
    154181      this.datasetView.TabIndex = 7;
     
    164191      this.dataTabPage.ResumeLayout(false);
    165192      this.variableInfosTabPage.ResumeLayout(false);
     193      this.tabPage1.ResumeLayout(false);
    166194      this.descriptionTabPage.ResumeLayout(false);
    167195      this.ResumeLayout(false);
     
    179207    private System.Windows.Forms.TabPage descriptionTabPage;
    180208    private HeuristicLab.Core.OperatorBaseDescriptionView operatorBaseDescriptionView;
     209    private System.Windows.Forms.TabPage tabPage1;
     210    private HeuristicLab.Core.OperatorBaseVariablesView operatorBaseVariablesView;
    181211    private HeuristicLab.DataAnalysis.DatasetView datasetView;
    182212  }
  • trunk/sources/HeuristicLab.StructureIdentification/StructIdProblemInjectorView.cs

    r274 r363  
    8989        if (success) {
    9090          Dataset dataset = (Dataset)StructIdProblemInjector.GetVariable("Dataset").Value;
    91           dataset.Rows = parser.TrainingSamplesEnd - parser.TrainingSamplesStart;
     91          dataset.Rows = parser.Rows;
    9292          dataset.Columns = parser.Columns;
    9393          dataset.VariableNames = parser.VariableNames;
     
    9595          dataset.Samples = new double[dataset.Rows * dataset.Columns];
    9696          Array.Copy(parser.Samples, dataset.Samples, dataset.Columns * dataset.Rows);
    97 
     97          ((IntData)StructIdProblemInjector.GetVariable("TrainingSamplesStart").Value).Data = parser.TrainingSamplesStart;
     98          ((IntData)StructIdProblemInjector.GetVariable("TrainingSamplesEnd").Value).Data = parser.TrainingSamplesEnd;
     99          ((IntData)StructIdProblemInjector.GetVariable("ValidationSamplesStart").Value).Data = parser.ValidationSamplesStart;
     100          ((IntData)StructIdProblemInjector.GetVariable("ValidationSamplesEnd").Value).Data = parser.ValidationSamplesEnd;
    98101          ((IntData)StructIdProblemInjector.GetVariable("TargetVariable").Value).Data = parser.TargetVariable;
    99102          Refresh();
Note: See TracChangeset for help on using the changeset viewer.