Free cookie consent management tool by TermsFeed Policy Generator

Changeset 14939


Ignore:
Timestamp:
05/05/17 20:05:24 (8 years ago)
Author:
gkronber
Message:

#2529: merged r14422 and r14423 from trunk to stable

Location:
stable
Files:
10 edited
2 copied

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Problems.DataAnalysis

  • stable/HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis

  • stable/HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis/3.4/SymbolicTimeSeriesPrognosisExpressionTreeInterpreter.cs

    r14811 r14939  
    4545    }
    4646
    47     [ThreadStatic]
    48     private static double[] targetVariableCache;
    49     [ThreadStatic]
    50     private static List<int> invalidateCacheIndexes;
    51 
    5247    [StorableConstructor]
    5348    private SymbolicTimeSeriesPrognosisExpressionTreeInterpreter(bool deserializing) : base(deserializing) { }
     
    7772      if (CheckExpressionsWithIntervalArithmetic)
    7873        throw new NotSupportedException("Interval arithmetic is not yet supported in the symbolic data analysis interpreter.");
    79       if (targetVariableCache == null || targetVariableCache.GetLength(0) < dataset.Rows)
    80         targetVariableCache = dataset.GetDoubleValues(TargetVariable).ToArray();
    81       if (invalidateCacheIndexes == null)
    82         invalidateCacheIndexes = new List<int>(10);
    8374
    8475      string targetVariable = TargetVariable;
     76      double[] targetVariableCache = dataset.GetDoubleValues(targetVariable).ToArray();
    8577      lock (syncRoot) {
    8678        EvaluatedSolutions++; // increment the evaluated solutions counter
     
    10092          vProgs[i] = Evaluate(dataset, ref localRow, state);
    10193          targetVariableCache[localRow] = vProgs[i];
    102           invalidateCacheIndexes.Add(localRow);
    10394          state.Reset();
    10495        }
    10596        yield return vProgs;
    106 
    107         int j = 0;
    108         foreach (var targetValue in dataset.GetDoubleValues(targetVariable, invalidateCacheIndexes)) {
    109           targetVariableCache[invalidateCacheIndexes[j]] = targetValue;
    110           j++;
    111         }
    112         invalidateCacheIndexes.Clear();
    11397      }
    11498
  • stable/HeuristicLab.Problems.DataAnalysis.Views

  • stable/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj

    r14874 r14939  
    410410    <Compile Include="Solution Views\TimeSeriesPrognosisSolutionView.Designer.cs">
    411411      <DependentUpon>TimeSeriesPrognosisSolutionView.cs</DependentUpon>
     412    </Compile>
     413    <Compile Include="TimeSeriesPrognosis\TimeSeriesPrognosisLineChartView.cs">
     414      <SubType>UserControl</SubType>
     415    </Compile>
     416    <Compile Include="TimeSeriesPrognosis\TimeSeriesPrognosisLineChartView.Designer.cs">
     417      <DependentUpon>TimeSeriesPrognosisLineChartView.cs</DependentUpon>
    412418    </Compile>
    413419    <Compile Include="TimeSeriesPrognosis\TimeSeriesPrognosisResultsView.cs">
  • stable/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionLineChartView.cs

    r14309 r14939  
    5757    }
    5858
     59    protected virtual void GetTrainingSeries(out int[] x, out double[] y) {
     60      x = Content.ProblemData.TrainingIndices.ToArray();
     61      y = Content.EstimatedTrainingValues.ToArray();
     62    }
     63
     64    protected virtual void GetTestSeries(out int[] x, out double[] y) {
     65      x = Content.ProblemData.TestIndices.ToArray();
     66      y = Content.EstimatedTestValues.ToArray();
     67    }
     68
     69    protected virtual void GetAllValuesSeries(out int[] x, out double[] y) {
     70      x = Enumerable.Range(0, Content.ProblemData.Dataset.Rows).Except(Content.ProblemData.TrainingIndices).Except(Content.ProblemData.TestIndices).ToArray();
     71      var tmp = Content.EstimatedValues.ToArray();
     72      y = x.Select(index => tmp[index]).ToArray();
     73    }
     74
    5975    private void RedrawChart() {
    6076      this.chart.Series.Clear();
     
    7389        this.chart.Series[ESTIMATEDVALUES_TRAINING_SERIES_NAME].ChartType = SeriesChartType.FastLine;
    7490        this.chart.Series[ESTIMATEDVALUES_TRAINING_SERIES_NAME].EmptyPointStyle.Color = this.chart.Series[ESTIMATEDVALUES_TRAINING_SERIES_NAME].Color;
    75         this.chart.Series[ESTIMATEDVALUES_TRAINING_SERIES_NAME].Points.DataBindXY(Content.ProblemData.TrainingIndices.ToArray(), Content.EstimatedTrainingValues.ToArray());
     91        int[] trainingIdx;
     92        double[] trainingY;
     93        GetTrainingSeries(out trainingIdx, out trainingY);
     94        this.chart.Series[ESTIMATEDVALUES_TRAINING_SERIES_NAME].Points.DataBindXY(trainingIdx, trainingY);
    7695        this.InsertEmptyPoints(this.chart.Series[ESTIMATEDVALUES_TRAINING_SERIES_NAME]);
    7796        this.chart.Series[ESTIMATEDVALUES_TRAINING_SERIES_NAME].Tag = Content;
     97
    7898        // test series
    7999        this.chart.Series.Add(ESTIMATEDVALUES_TEST_SERIES_NAME);
    80100        this.chart.Series[ESTIMATEDVALUES_TEST_SERIES_NAME].LegendText = ESTIMATEDVALUES_TEST_SERIES_NAME;
    81101        this.chart.Series[ESTIMATEDVALUES_TEST_SERIES_NAME].ChartType = SeriesChartType.FastLine;
    82         this.chart.Series[ESTIMATEDVALUES_TEST_SERIES_NAME].Points.DataBindXY(Content.ProblemData.TestIndices.ToArray(), Content.EstimatedTestValues.ToArray());
     102        int[] testIdx;
     103        double[] testY;
     104        GetTestSeries(out testIdx, out testY);
     105        this.chart.Series[ESTIMATEDVALUES_TEST_SERIES_NAME].Points.DataBindXY(testIdx, testY);
    83106        this.InsertEmptyPoints(this.chart.Series[ESTIMATEDVALUES_TEST_SERIES_NAME]);
    84107        this.chart.Series[ESTIMATEDVALUES_TEST_SERIES_NAME].Tag = Content;
     108
    85109        // series of remaining points
    86         int[] allIndices = Enumerable.Range(0, Content.ProblemData.Dataset.Rows).Except(Content.ProblemData.TrainingIndices).Except(Content.ProblemData.TestIndices).ToArray();
    87         var estimatedValues = Content.EstimatedValues.ToArray();
    88         List<double> allEstimatedValues = allIndices.Select(index => estimatedValues[index]).ToList();
     110        int[] allIdx;
     111        double[] allEstimatedValues;
     112        GetAllValuesSeries(out allIdx, out allEstimatedValues);
     113
    89114        this.chart.Series.Add(ESTIMATEDVALUES_ALL_SERIES_NAME);
    90115        this.chart.Series[ESTIMATEDVALUES_ALL_SERIES_NAME].LegendText = ESTIMATEDVALUES_ALL_SERIES_NAME;
    91116        this.chart.Series[ESTIMATEDVALUES_ALL_SERIES_NAME].ChartType = SeriesChartType.FastLine;
    92         if (allEstimatedValues.Count > 0) {
    93           this.chart.Series[ESTIMATEDVALUES_ALL_SERIES_NAME].Points.DataBindXY(allIndices, allEstimatedValues);
     117        if (allEstimatedValues.Length > 0) {
     118          this.chart.Series[ESTIMATEDVALUES_ALL_SERIES_NAME].Points.DataBindXY(allIdx, allEstimatedValues);
    94119          this.InsertEmptyPoints(this.chart.Series[ESTIMATEDVALUES_ALL_SERIES_NAME]);
    95120        }
     
    244269        }
    245270      } else if (Content != null) {
    246         string targetVariableName = Content.ProblemData.TargetVariable;
    247 
    248         IEnumerable<int> indices = null;
     271
     272        int[] indices = null;
    249273        double[] predictedValues = null;
    250274        switch (series.Name) {
    251275          case ESTIMATEDVALUES_ALL_SERIES_NAME:
    252             indices = Enumerable.Range(0, Content.ProblemData.Dataset.Rows).Except(Content.ProblemData.TrainingIndices).Except(Content.ProblemData.TestIndices).ToArray();
    253             var estimatedValues = Content.EstimatedValues.ToArray();
    254             predictedValues = indices.Select(index => estimatedValues[index]).ToArray();
     276            GetAllValuesSeries(out indices, out predictedValues);
    255277            break;
    256278          case ESTIMATEDVALUES_TRAINING_SERIES_NAME:
    257             indices = Content.ProblemData.TrainingIndices.ToArray();
    258             predictedValues = Content.EstimatedTrainingValues.ToArray();
     279            GetTrainingSeries(out indices, out predictedValues);
    259280            break;
    260281          case ESTIMATEDVALUES_TEST_SERIES_NAME:
    261             indices = Content.ProblemData.TestIndices.ToArray();
    262             predictedValues = Content.EstimatedTestValues.ToArray();
     282            GetTestSeries(out indices, out predictedValues);
    263283            break;
    264284        }
  • stable/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/TimeSeriesPrognosisSolution.cs

    r14186 r14939  
    2121
    2222using System.Collections.Generic;
     23using System.Linq;
    2324using HeuristicLab.Common;
    2425using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    4344      return Model.GetPrognosedValues(ProblemData.Dataset, rows, horizons);
    4445    }
     46
     47    public override IEnumerable<double> PrognosedTestValues {
     48      get {
     49        return Model.GetPrognosedValues(ProblemData.Dataset, ProblemData.TestIndices.Take(1),
     50          new int[] { ProblemData.TestIndices.Count() }).First();
     51      }
     52    }
    4553  }
    4654}
  • stable/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/TimeSeriesPrognosisSolutionBase.cs

    r14186 r14939  
    6464    }
    6565
     66    public abstract IEnumerable<double> PrognosedTestValues { get; }
    6667    public abstract IEnumerable<IEnumerable<double>> GetPrognosedValues(IEnumerable<int> rows, IEnumerable<int> horizon);
    6768
     
    150151      OnlineCalculatorError errorState;
    151152      double trainingMean = ProblemData.TrainingIndices.Any() ? ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices).Average() : double.NaN;
    152       var meanModel = new ConstantModel(trainingMean,ProblemData.TargetVariable);
     153      var meanModel = new ConstantModel(trainingMean, ProblemData.TargetVariable);
    153154
    154155      double alpha, beta;
  • stable/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/TimeSeriesPrognosis/ITimeSeriesPrognosisSolution.cs

    r14186 r14939  
    2828    IEnumerable<IEnumerable<double>> GetPrognosedValues(IEnumerable<int> rows, IEnumerable<int> horizon);
    2929
     30    IEnumerable<double> PrognosedTestValues { get; }
     31
    3032    double TrainingTheilsUStatisticAR1 { get; }
    3133    double TestTheilsUStatisticAR1 { get; }
Note: See TracChangeset for help on using the changeset viewer.