Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/03/09 12:26:42 (15 years ago)
Author:
gkronber
Message:

Merged changes from GP-refactoring branch back into the trunk #713.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/CrossValidation.cs

    r1529 r2222  
    2121
    2222using System;
    23 using System.Collections.Generic;
    24 using System.Text;
    25 using System.Xml;
    2623using HeuristicLab.Core;
    2724using HeuristicLab.Data;
    2825using HeuristicLab.DataAnalysis;
    2926
    30 namespace HeuristicLab.GP.StructureIdentification.Classification
    31 {
    32     public class CrossValidation : OperatorBase
    33     {
     27namespace HeuristicLab.GP.StructureIdentification.Classification {
     28  public class CrossValidation : OperatorBase {
    3429
    35         private const string DATASET = "Dataset";
    36         private const string NFOLD = "n-Fold";
    37         private const string TRAININGSAMPLESSTART = "TrainingSamplesStart";
    38         private const string TRAININGSAMPLESEND = "TrainingSamplesEnd";
    39         private const string VALIDATIONSAMPLESSTART = "ValidationSamplesStart";
    40         private const string VALIDATIONSAMPLESEND = "ValidationSamplesEnd";
    41         private const string TESTSAMPLESSTART = "TestSamplesStart";
    42         private const string TESTSAMPLESEND = "TestSamplesEnd";
     30    private const string DATASET = "Dataset";
     31    private const string NFOLD = "n-Fold";
     32    private const string TRAININGSAMPLESSTART = "TrainingSamplesStart";
     33    private const string TRAININGSAMPLESEND = "TrainingSamplesEnd";
     34    private const string VALIDATIONSAMPLESSTART = "ValidationSamplesStart";
     35    private const string VALIDATIONSAMPLESEND = "ValidationSamplesEnd";
     36    private const string TESTSAMPLESSTART = "TestSamplesStart";
     37    private const string TESTSAMPLESEND = "TestSamplesEnd";
    4338
    44         public override string Description
    45         {
    46             get { return @"TASK"; }
    47         }
     39    public override string Description {
     40      get { return @"TASK"; }
     41    }
    4842
    49         public CrossValidation()
    50             : base()
    51         {
    52             AddVariableInfo(new VariableInfo(DATASET, "The original dataset and the new datasets in the newly created subscopes", typeof(Dataset), VariableKind.In));
    53             AddVariableInfo(new VariableInfo(NFOLD, "Number of folds for the cross-validation", typeof(IntData), VariableKind.In));
    54             AddVariableInfo(new VariableInfo(TRAININGSAMPLESSTART, "The start of training samples in the original dataset and starts of training samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New));
    55             AddVariableInfo(new VariableInfo(TRAININGSAMPLESEND, "The end of training samples in the original dataset and ends of training samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New));
    56             AddVariableInfo(new VariableInfo(VALIDATIONSAMPLESSTART, "The start of validation samples in the original dataset and starts of validation samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New));
    57             AddVariableInfo(new VariableInfo(VALIDATIONSAMPLESEND, "The end of validation samples in the original dataset and ends of validation samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New));
    58             AddVariableInfo(new VariableInfo(TESTSAMPLESSTART, "The start of the test samples in the new datasets", typeof(IntData), VariableKind.New));
    59             AddVariableInfo(new VariableInfo(TESTSAMPLESEND, "The end of the test samples in the new datasets", typeof(IntData), VariableKind.New));
    60         }
     43    public CrossValidation()
     44      : base() {
     45      AddVariableInfo(new VariableInfo(DATASET, "The original dataset and the new datasets in the newly created subscopes", typeof(Dataset), VariableKind.In));
     46      AddVariableInfo(new VariableInfo(NFOLD, "Number of folds for the cross-validation", typeof(IntData), VariableKind.In));
     47      AddVariableInfo(new VariableInfo(TRAININGSAMPLESSTART, "The start of training samples in the original dataset and starts of training samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New));
     48      AddVariableInfo(new VariableInfo(TRAININGSAMPLESEND, "The end of training samples in the original dataset and ends of training samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New));
     49      AddVariableInfo(new VariableInfo(VALIDATIONSAMPLESSTART, "The start of validation samples in the original dataset and starts of validation samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New));
     50      AddVariableInfo(new VariableInfo(VALIDATIONSAMPLESEND, "The end of validation samples in the original dataset and ends of validation samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New));
     51      AddVariableInfo(new VariableInfo(TESTSAMPLESSTART, "The start of the test samples in the new datasets", typeof(IntData), VariableKind.New));
     52      AddVariableInfo(new VariableInfo(TESTSAMPLESEND, "The end of the test samples in the new datasets", typeof(IntData), VariableKind.New));
     53    }
    6154
    62         public override IOperation Apply(IScope scope) {
     55    public override IOperation Apply(IScope scope) {
    6356      Dataset origDataset = GetVariableValue<Dataset>(DATASET, scope, true);
    6457      int nFolds = GetVariableValue<IntData>(NFOLD, scope, true).Data;
    65       if (nFolds < 2) throw new ArgumentException("The number of folds (nFolds) has to be >=2 for cross validation"); 
     58      if (nFolds < 2) throw new ArgumentException("The number of folds (nFolds) has to be >=2 for cross validation");
    6659      int origTrainingSamplesStart = GetVariableValue<IntData>(TRAININGSAMPLESSTART, scope, true).Data;
    6760      int origTrainingSamplesEnd = GetVariableValue<IntData>(TRAININGSAMPLESEND, scope, true).Data;
    6861      int origValidationSamplesStart = GetVariableValue<IntData>(VALIDATIONSAMPLESSTART, scope, true).Data;
    6962      int origValidationSamplesEnd = GetVariableValue<IntData>(VALIDATIONSAMPLESEND, scope, true).Data;
    70       int n=origDataset.Rows;
    71       int origTrainingSamples = (origTrainingSamplesEnd-origTrainingSamplesStart);
    72       int origValidationSamples = (origValidationSamplesEnd-origValidationSamplesStart);
     63      int n = origDataset.Rows;
     64      int origTrainingSamples = (origTrainingSamplesEnd - origTrainingSamplesStart);
     65      int origValidationSamples = (origValidationSamplesEnd - origValidationSamplesStart);
    7366
    7467      double percentTrainingSamples = origTrainingSamples / (double)(origValidationSamples + origTrainingSamples);
     
    8275      int newTestSamplesEnd = n;
    8376
    84       for(int i = 0; i < nFolds; i++) {
     77      for (int i = 0; i < nFolds; i++) {
    8578        Scope childScope = new Scope(i.ToString());
    8679        Dataset rotatedSet = new Dataset();
     
    10699    }
    107100
    108         private void RotateArray(double[] samples, int p)
    109         {
    110             Array.Reverse(samples, 0, p);
    111             Array.Reverse(samples, p, samples.Length - p);
    112             Array.Reverse(samples);
    113         }
     101    private void RotateArray(double[] samples, int p) {
     102      Array.Reverse(samples, 0, p);
     103      Array.Reverse(samples, p, samples.Length - p);
     104      Array.Reverse(samples);
    114105    }
     106  }
    115107}
Note: See TracChangeset for help on using the changeset viewer.