- Timestamp:
- 08/08/12 14:04:17 (12 years ago)
- Location:
- branches/HeuristicLab.TimeSeries
- Files:
-
- 1 added
- 26 edited
- 1 copied
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.TimeSeries
- Property svn:ignore
-
old new 20 20 bin 21 21 protoc.exe 22 _ReSharper.HeuristicLab.TimeSeries-3.3
-
- Property svn:ignore
-
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis
- Property svn:mergeinfo changed
/trunk/sources/HeuristicLab.Problems.DataAnalysis merged: 7921,7969,8113,8121,8126,8139,8151-8153,8167,8174,8246,8355
- Property svn:mergeinfo changed
-
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Dataset.cs
r7989 r8430 131 131 for (int col = 0; col < storableData.GetLength(1); col++) { 132 132 string columName = variableNames[col]; 133 var values = new List<double>( );134 for (int row = 0; row < storableData.GetLength(0); row++) {133 var values = new List<double>(rows); 134 for (int row = 0; row < rows; row++) { 135 135 values.Add(storableData[row, col]); 136 136 } -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/HeuristicLab.Problems.DataAnalysis-3.4.csproj
r8010 r8430 93 93 </PropertyGroup> 94 94 <ItemGroup> 95 <Reference Include="ALGLIB-3.5.0, Version=3.5.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" /> 96 <Reference Include="HeuristicLab.ALGLIB-3.5.0, Version=3.5.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" /> 95 97 <Reference Include="HeuristicLab.Collections-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" /> 96 98 <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" /> … … 140 142 </Compile> 141 143 <Compile Include="Implementation\Regression\RegressionEnsembleSolution.cs" /> 142 <Compile Include="Implementation\TimeSeriesPrognosis\Models\ TimeSeriesPrognosisConstantModel.cs" />144 <Compile Include="Implementation\TimeSeriesPrognosis\Models\ConstantTimeSeriesPrognosisModel.cs" /> 143 145 <Compile Include="Implementation\TimeSeriesPrognosis\Models\TimeSeriesPrognosisMovingAverageModel.cs" /> 144 146 <Compile Include="Implementation\TimeSeriesPrognosis\Models\TimeSeriesPrognosisAutoRegressiveModel.cs" /> … … 159 161 <Compile Include="Interfaces\Regression\IRegressionEnsembleSolution.cs" /> 160 162 <Compile Include="Implementation\Regression\RegressionSolutionBase.cs" /> 163 <Compile Include="OnlineCalculators\AutoCorrelationCalculator.cs" /> 164 <Compile Include="OnlineCalculators\HoeffdingsDependenceCalculator.cs" /> 161 165 <Compile Include="OnlineCalculators\OnlineMaxAbsoluteErrorCalculator.cs" /> 162 166 <Compile Include="OnlineCalculators\OnlineMeanErrorCalculator.cs" /> -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationEnsembleSolution.cs
r7268 r8430 37 37 [Creatable("Data Analysis - Ensembles")] 38 38 public sealed class ClassificationEnsembleSolution : ClassificationSolution, IClassificationEnsembleSolution { 39 private readonly Dictionary<int, double> trainingEvaluationCache = new Dictionary<int, double>(); 40 private readonly Dictionary<int, double> testEvaluationCache = new Dictionary<int, double>(); 41 39 42 public new IClassificationEnsembleModel Model { 40 43 get { return (IClassificationEnsembleModel)base.Model; } … … 85 88 } 86 89 90 trainingEvaluationCache = new Dictionary<int, double>(original.ProblemData.TrainingIndices.Count()); 91 testEvaluationCache = new Dictionary<int, double>(original.ProblemData.TestIndices.Count()); 92 87 93 classificationSolutions = cloner.Clone(original.classificationSolutions); 88 94 RegisterClassificationSolutionsEventHandler(); … … 128 134 } 129 135 136 trainingEvaluationCache = new Dictionary<int, double>(problemData.TrainingIndices.Count()); 137 testEvaluationCache = new Dictionary<int, double>(problemData.TestIndices.Count()); 138 130 139 RegisterClassificationSolutionsEventHandler(); 131 140 classificationSolutions.AddRange(solutions); … … 148 157 public override IEnumerable<double> EstimatedTrainingClassValues { 149 158 get { 150 var rows = ProblemData.TrainingIndizes; 151 var estimatedValuesEnumerators = (from model in Model.Models 152 select new { Model = model, EstimatedValuesEnumerator = model.GetEstimatedClassValues(ProblemData.Dataset, rows).GetEnumerator() }) 153 .ToList(); 154 var rowsEnumerator = rows.GetEnumerator(); 155 // aggregate to make sure that MoveNext is called for all enumerators 156 while (rowsEnumerator.MoveNext() & estimatedValuesEnumerators.Select(en => en.EstimatedValuesEnumerator.MoveNext()).Aggregate(true, (acc, b) => acc & b)) { 157 int currentRow = rowsEnumerator.Current; 158 159 var selectedEnumerators = from pair in estimatedValuesEnumerators 160 where RowIsTrainingForModel(currentRow, pair.Model) && !RowIsTestForModel(currentRow, pair.Model) 161 select pair.EstimatedValuesEnumerator; 162 yield return AggregateEstimatedClassValues(selectedEnumerators.Select(x => x.Current)); 159 var rows = ProblemData.TrainingIndices; 160 var rowsToEvaluate = rows.Except(trainingEvaluationCache.Keys); 161 var rowsEnumerator = rowsToEvaluate.GetEnumerator(); 162 var valuesEnumerator = GetEstimatedValues(rowsToEvaluate, (r, m) => RowIsTrainingForModel(r, m) && !RowIsTestForModel(r, m)).GetEnumerator(); 163 164 while (rowsEnumerator.MoveNext() & valuesEnumerator.MoveNext()) { 165 trainingEvaluationCache.Add(rowsEnumerator.Current, valuesEnumerator.Current); 163 166 } 167 168 return rows.Select(row => trainingEvaluationCache[row]); 164 169 } 165 170 } … … 167 172 public override IEnumerable<double> EstimatedTestClassValues { 168 173 get { 169 var rows = ProblemData.TestIndizes; 170 var estimatedValuesEnumerators = (from model in Model.Models 171 select new { Model = model, EstimatedValuesEnumerator = model.GetEstimatedClassValues(ProblemData.Dataset, rows).GetEnumerator() }) 172 .ToList(); 173 var rowsEnumerator = ProblemData.TestIndizes.GetEnumerator(); 174 // aggregate to make sure that MoveNext is called for all enumerators 175 while (rowsEnumerator.MoveNext() & estimatedValuesEnumerators.Select(en => en.EstimatedValuesEnumerator.MoveNext()).Aggregate(true, (acc, b) => acc & b)) { 176 int currentRow = rowsEnumerator.Current; 177 178 var selectedEnumerators = from pair in estimatedValuesEnumerators 179 where RowIsTestForModel(currentRow, pair.Model) 180 select pair.EstimatedValuesEnumerator; 181 182 yield return AggregateEstimatedClassValues(selectedEnumerators.Select(x => x.Current)); 174 var rows = ProblemData.TestIndices; 175 var rowsToEvaluate = rows.Except(testEvaluationCache.Keys); 176 var rowsEnumerator = rowsToEvaluate.GetEnumerator(); 177 var valuesEnumerator = GetEstimatedValues(rowsToEvaluate, RowIsTestForModel).GetEnumerator(); 178 179 while (rowsEnumerator.MoveNext() & valuesEnumerator.MoveNext()) { 180 testEvaluationCache.Add(rowsEnumerator.Current, valuesEnumerator.Current); 183 181 } 182 183 return rows.Select(row => testEvaluationCache[row]); 184 } 185 } 186 187 private IEnumerable<double> GetEstimatedValues(IEnumerable<int> rows, Func<int, IClassificationModel, bool> modelSelectionPredicate) { 188 var estimatedValuesEnumerators = (from model in Model.Models 189 select new { Model = model, EstimatedValuesEnumerator = model.GetEstimatedClassValues(ProblemData.Dataset, rows).GetEnumerator() }) 190 .ToList(); 191 var rowsEnumerator = rows.GetEnumerator(); 192 // aggregate to make sure that MoveNext is called for all enumerators 193 while (rowsEnumerator.MoveNext() & estimatedValuesEnumerators.Select(en => en.EstimatedValuesEnumerator.MoveNext()).Aggregate(true, (acc, b) => acc & b)) { 194 int currentRow = rowsEnumerator.Current; 195 196 var selectedEnumerators = from pair in estimatedValuesEnumerators 197 where modelSelectionPredicate(currentRow, pair.Model) 198 select pair.EstimatedValuesEnumerator; 199 200 yield return AggregateEstimatedClassValues(selectedEnumerators.Select(x => x.Current)); 184 201 } 185 202 } … … 196 213 197 214 public override IEnumerable<double> GetEstimatedClassValues(IEnumerable<int> rows) { 198 return from xs in GetEstimatedClassValueVectors(ProblemData.Dataset, rows) 199 select AggregateEstimatedClassValues(xs); 215 var rowsToEvaluate = rows.Except(evaluationCache.Keys); 216 var rowsEnumerator = rowsToEvaluate.GetEnumerator(); 217 var valuesEnumerator = (from xs in GetEstimatedClassValueVectors(ProblemData.Dataset, rowsToEvaluate) 218 select AggregateEstimatedClassValues(xs)) 219 .GetEnumerator(); 220 221 while (rowsEnumerator.MoveNext() & valuesEnumerator.MoveNext()) { 222 evaluationCache.Add(rowsEnumerator.Current, valuesEnumerator.Current); 223 } 224 225 return rows.Select(row => evaluationCache[row]); 200 226 } 201 227 … … 223 249 224 250 protected override void OnProblemDataChanged() { 251 trainingEvaluationCache.Clear(); 252 testEvaluationCache.Clear(); 253 evaluationCache.Clear(); 254 225 255 IClassificationProblemData problemData = new ClassificationProblemData(ProblemData.Dataset, 226 256 ProblemData.AllowedInputVariables, … … 251 281 public void AddClassificationSolutions(IEnumerable<IClassificationSolution> solutions) { 252 282 classificationSolutions.AddRange(solutions); 283 284 trainingEvaluationCache.Clear(); 285 testEvaluationCache.Clear(); 286 evaluationCache.Clear(); 253 287 } 254 288 public void RemoveClassificationSolutions(IEnumerable<IClassificationSolution> solutions) { 255 289 classificationSolutions.RemoveRange(solutions); 290 291 trainingEvaluationCache.Clear(); 292 testEvaluationCache.Clear(); 293 evaluationCache.Clear(); 256 294 } 257 295 … … 275 313 trainingPartitions[solution.Model] = solution.ProblemData.TrainingPartition; 276 314 testPartitions[solution.Model] = solution.ProblemData.TestPartition; 315 316 trainingEvaluationCache.Clear(); 317 testEvaluationCache.Clear(); 318 evaluationCache.Clear(); 277 319 } 278 320 … … 282 324 trainingPartitions.Remove(solution.Model); 283 325 testPartitions.Remove(solution.Model); 326 327 trainingEvaluationCache.Clear(); 328 testEvaluationCache.Clear(); 329 evaluationCache.Clear(); 284 330 } 285 331 } -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationProblemData.cs
r7842 r8430 207 207 208 208 #region parameter properties 209 public ConstrainedValueParameter<StringValue> TargetVariableParameter {210 get { return ( ConstrainedValueParameter<StringValue>)Parameters[TargetVariableParameterName]; }209 public IConstrainedValueParameter<StringValue> TargetVariableParameter { 210 get { return (IConstrainedValueParameter<StringValue>)Parameters[TargetVariableParameterName]; } 211 211 } 212 212 public IFixedValueParameter<StringMatrix> ClassNamesParameter { -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationSolution.cs
r7268 r8430 44 44 public ClassificationSolution(IClassificationModel model, IClassificationProblemData problemData) 45 45 : base(model, problemData) { 46 evaluationCache = new Dictionary<int, double>( );46 evaluationCache = new Dictionary<int, double>(problemData.Dataset.Rows); 47 47 } 48 48 … … 51 51 } 52 52 public override IEnumerable<double> EstimatedTrainingClassValues { 53 get { return GetEstimatedClassValues(ProblemData.TrainingIndi zes); }53 get { return GetEstimatedClassValues(ProblemData.TrainingIndices); } 54 54 } 55 55 public override IEnumerable<double> EstimatedTestClassValues { 56 get { return GetEstimatedClassValues(ProblemData.TestIndi zes); }56 get { return GetEstimatedClassValues(ProblemData.TestIndices); } 57 57 } 58 58 -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationSolutionBase.cs
r7268 r8430 87 87 protected void CalculateResults() { 88 88 double[] estimatedTrainingClassValues = EstimatedTrainingClassValues.ToArray(); // cache values 89 double[] originalTrainingClassValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndi zes).ToArray();89 double[] originalTrainingClassValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices).ToArray(); 90 90 double[] estimatedTestClassValues = EstimatedTestClassValues.ToArray(); // cache values 91 double[] originalTestClassValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndi zes).ToArray();91 double[] originalTestClassValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndices).ToArray(); 92 92 93 93 OnlineCalculatorError errorState; -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/DiscriminantFunctionClassificationSolution.cs
r7268 r8430 59 59 } 60 60 public override IEnumerable<double> EstimatedTrainingClassValues { 61 get { return GetEstimatedClassValues(ProblemData.TrainingIndi zes); }61 get { return GetEstimatedClassValues(ProblemData.TrainingIndices); } 62 62 } 63 63 public override IEnumerable<double> EstimatedTestClassValues { 64 get { return GetEstimatedClassValues(ProblemData.TestIndi zes); }64 get { return GetEstimatedClassValues(ProblemData.TestIndices); } 65 65 } 66 66 … … 82 82 } 83 83 public override IEnumerable<double> EstimatedTrainingValues { 84 get { return GetEstimatedValues(ProblemData.TrainingIndi zes); }84 get { return GetEstimatedValues(ProblemData.TrainingIndices); } 85 85 } 86 86 public override IEnumerable<double> EstimatedTestValues { 87 get { return GetEstimatedValues(ProblemData.TestIndi zes); }87 get { return GetEstimatedValues(ProblemData.TestIndices); } 88 88 } 89 89 -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/DiscriminantFunctionClassificationSolutionBase.cs
r7268 r8430 103 103 protected void CalculateRegressionResults() { 104 104 double[] estimatedTrainingValues = EstimatedTrainingValues.ToArray(); // cache values 105 double[] originalTrainingValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndi zes).ToArray();105 double[] originalTrainingValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices).ToArray(); 106 106 double[] estimatedTestValues = EstimatedTestValues.ToArray(); // cache values 107 double[] originalTestValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndi zes).ToArray();107 double[] originalTestValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndices).ToArray(); 108 108 109 109 OnlineCalculatorError errorState; … … 140 140 double[] classValues; 141 141 double[] thresholds; 142 var targetClassValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndi zes);142 var targetClassValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices); 143 143 AccuracyMaximizationThresholdCalculator.CalculateThresholds(ProblemData, EstimatedTrainingValues, targetClassValues, out classValues, out thresholds); 144 144 … … 149 149 double[] classValues; 150 150 double[] thresholds; 151 var targetClassValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndi zes);151 var targetClassValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices); 152 152 NormalDistributionCutPointsThresholdCalculator.CalculateThresholds(ProblemData, EstimatedTrainingValues, targetClassValues, out classValues, out thresholds); 153 153 -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ThresholdCalculators/AccuracyMaximizationThresholdCalculator.cs
r7268 r8430 54 54 public static void CalculateThresholds(IClassificationProblemData problemData, IEnumerable<double> estimatedValues, IEnumerable<double> targetClassValues, out double[] classValues, out double[] thresholds) { 55 55 int slices = 100; 56 double minThresholdInc = 10e-5; // necessary to prevent infinite loop when maxEstimated - minEstimated is effectively zero (constant model) 56 57 List<double> estimatedValuesList = estimatedValues.ToList(); 57 58 double maxEstimatedValue = estimatedValuesList.Max(); 58 59 double minEstimatedValue = estimatedValuesList.Min(); 59 double thresholdIncrement = (maxEstimatedValue - minEstimatedValue) / slices;60 double thresholdIncrement = Math.Max((maxEstimatedValue - minEstimatedValue) / slices, minThresholdInc); 60 61 var estimatedAndTargetValuePairs = 61 62 estimatedValuesList.Zip(targetClassValues, (x, y) => new { EstimatedValue = x, TargetClassValue = y }) … … 70 71 71 72 // incrementally calculate accuracy of all possible thresholds 72 int[,] confusionMatrix = new int[nClasses, nClasses];73 74 73 for (int i = 1; i < thresholds.Length; i++) { 75 74 double lowerThreshold = thresholds[i - 1]; -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Clustering/ClusteringSolution.cs
r7268 r8430 68 68 public virtual IEnumerable<int> TrainingClusterValues { 69 69 get { 70 return GetClusterValues(ProblemData.TrainingIndi zes);70 return GetClusterValues(ProblemData.TrainingIndices); 71 71 } 72 72 } … … 74 74 public virtual IEnumerable<int> TestClusterValues { 75 75 get { 76 return GetClusterValues(ProblemData.TestIndi zes);76 return GetClusterValues(ProblemData.TestIndices); 77 77 } 78 78 } -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/DataAnalysisProblemData.cs
r7268 r8430 75 75 } 76 76 77 public virtual IEnumerable<int> TrainingIndi zes {77 public virtual IEnumerable<int> TrainingIndices { 78 78 get { 79 79 return Enumerable.Range(TrainingPartition.Start, Math.Max(0, TrainingPartition.End - TrainingPartition.Start)) … … 81 81 } 82 82 } 83 public virtual IEnumerable<int> TestIndi zes {83 public virtual IEnumerable<int> TestIndices { 84 84 get { 85 85 return Enumerable.Range(TestPartition.Start, Math.Max(0, TestPartition.End - TestPartition.Start)) -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionEnsembleSolution.cs
r7842 r8430 37 37 [Creatable("Data Analysis - Ensembles")] 38 38 public sealed class RegressionEnsembleSolution : RegressionSolution, IRegressionEnsembleSolution { 39 private readonly Dictionary<int, double> trainingEvaluationCache = new Dictionary<int, double>(); 40 private readonly Dictionary<int, double> testEvaluationCache = new Dictionary<int, double>(); 41 39 42 public new IRegressionEnsembleModel Model { 40 43 get { return (IRegressionEnsembleModel)base.Model; } … … 52 55 53 56 [Storable] 54 private Dictionary<IRegressionModel, IntRange> trainingPartitions;57 private readonly Dictionary<IRegressionModel, IntRange> trainingPartitions; 55 58 [Storable] 56 private Dictionary<IRegressionModel, IntRange> testPartitions;59 private readonly Dictionary<IRegressionModel, IntRange> testPartitions; 57 60 58 61 [StorableConstructor] … … 86 89 } 87 90 91 trainingEvaluationCache = new Dictionary<int, double>(original.ProblemData.TrainingIndices.Count()); 92 testEvaluationCache = new Dictionary<int, double>(original.ProblemData.TestIndices.Count()); 93 88 94 regressionSolutions = cloner.Clone(original.regressionSolutions); 89 95 RegisterRegressionSolutionsEventHandler(); … … 133 139 } 134 140 141 trainingEvaluationCache = new Dictionary<int, double>(problemData.TrainingIndices.Count()); 142 testEvaluationCache = new Dictionary<int, double>(problemData.TestIndices.Count()); 143 135 144 RegisterRegressionSolutionsEventHandler(); 136 145 regressionSolutions.AddRange(solutions); … … 153 162 public override IEnumerable<double> EstimatedTrainingValues { 154 163 get { 155 var rows = ProblemData.TrainingIndizes; 156 var estimatedValuesEnumerators = (from model in Model.Models 157 select new { Model = model, EstimatedValuesEnumerator = model.GetEstimatedValues(ProblemData.Dataset, rows).GetEnumerator() }) 158 .ToList(); 159 var rowsEnumerator = rows.GetEnumerator(); 160 // aggregate to make sure that MoveNext is called for all enumerators 161 while (rowsEnumerator.MoveNext() & estimatedValuesEnumerators.Select(en => en.EstimatedValuesEnumerator.MoveNext()).Aggregate(true, (acc, b) => acc & b)) { 162 int currentRow = rowsEnumerator.Current; 163 164 var selectedEnumerators = from pair in estimatedValuesEnumerators 165 where RowIsTrainingForModel(currentRow, pair.Model) && !RowIsTestForModel(currentRow, pair.Model) 166 select pair.EstimatedValuesEnumerator; 167 yield return AggregateEstimatedValues(selectedEnumerators.Select(x => x.Current)); 164 var rows = ProblemData.TrainingIndices; 165 var rowsToEvaluate = rows.Except(trainingEvaluationCache.Keys); 166 var rowsEnumerator = rowsToEvaluate.GetEnumerator(); 167 var valuesEnumerator = GetEstimatedValues(rowsToEvaluate, (r, m) => RowIsTrainingForModel(r, m) && !RowIsTestForModel(r, m)).GetEnumerator(); 168 169 while (rowsEnumerator.MoveNext() & valuesEnumerator.MoveNext()) { 170 trainingEvaluationCache.Add(rowsEnumerator.Current, valuesEnumerator.Current); 168 171 } 172 173 return rows.Select(row => trainingEvaluationCache[row]); 169 174 } 170 175 } … … 172 177 public override IEnumerable<double> EstimatedTestValues { 173 178 get { 174 var rows = ProblemData.TestIndizes; 175 var estimatedValuesEnumerators = (from model in Model.Models 176 select new { Model = model, EstimatedValuesEnumerator = model.GetEstimatedValues(ProblemData.Dataset, rows).GetEnumerator() }) 177 .ToList(); 178 var rowsEnumerator = ProblemData.TestIndizes.GetEnumerator(); 179 // aggregate to make sure that MoveNext is called for all enumerators 180 while (rowsEnumerator.MoveNext() & estimatedValuesEnumerators.Select(en => en.EstimatedValuesEnumerator.MoveNext()).Aggregate(true, (acc, b) => acc & b)) { 181 int currentRow = rowsEnumerator.Current; 182 183 var selectedEnumerators = from pair in estimatedValuesEnumerators 184 where RowIsTestForModel(currentRow, pair.Model) 185 select pair.EstimatedValuesEnumerator; 186 187 yield return AggregateEstimatedValues(selectedEnumerators.Select(x => x.Current)); 179 var rows = ProblemData.TestIndices; 180 var rowsToEvaluate = rows.Except(testEvaluationCache.Keys); 181 var rowsEnumerator = rowsToEvaluate.GetEnumerator(); 182 var valuesEnumerator = GetEstimatedValues(rowsToEvaluate, RowIsTestForModel).GetEnumerator(); 183 184 while (rowsEnumerator.MoveNext() & valuesEnumerator.MoveNext()) { 185 testEvaluationCache.Add(rowsEnumerator.Current, valuesEnumerator.Current); 188 186 } 187 188 return rows.Select(row => testEvaluationCache[row]); 189 } 190 } 191 192 private IEnumerable<double> GetEstimatedValues(IEnumerable<int> rows, Func<int, IRegressionModel, bool> modelSelectionPredicate) { 193 var estimatedValuesEnumerators = (from model in Model.Models 194 select new { Model = model, EstimatedValuesEnumerator = model.GetEstimatedValues(ProblemData.Dataset, rows).GetEnumerator() }) 195 .ToList(); 196 var rowsEnumerator = rows.GetEnumerator(); 197 // aggregate to make sure that MoveNext is called for all enumerators 198 while (rowsEnumerator.MoveNext() & estimatedValuesEnumerators.Select(en => en.EstimatedValuesEnumerator.MoveNext()).Aggregate(true, (acc, b) => acc & b)) { 199 int currentRow = rowsEnumerator.Current; 200 201 var selectedEnumerators = from pair in estimatedValuesEnumerators 202 where modelSelectionPredicate(currentRow, pair.Model) 203 select pair.EstimatedValuesEnumerator; 204 205 yield return AggregateEstimatedValues(selectedEnumerators.Select(x => x.Current)); 189 206 } 190 207 } … … 201 218 202 219 public override IEnumerable<double> GetEstimatedValues(IEnumerable<int> rows) { 203 return from xs in GetEstimatedValueVectors(ProblemData.Dataset, rows) 204 select AggregateEstimatedValues(xs); 220 var rowsToEvaluate = rows.Except(evaluationCache.Keys); 221 var rowsEnumerator = rowsToEvaluate.GetEnumerator(); 222 var valuesEnumerator = (from xs in GetEstimatedValueVectors(ProblemData.Dataset, rowsToEvaluate) 223 select AggregateEstimatedValues(xs)) 224 .GetEnumerator(); 225 226 while (rowsEnumerator.MoveNext() & valuesEnumerator.MoveNext()) { 227 evaluationCache.Add(rowsEnumerator.Current, valuesEnumerator.Current); 228 } 229 230 return rows.Select(row => evaluationCache[row]); 205 231 } 206 232 … … 223 249 224 250 protected override void OnProblemDataChanged() { 251 trainingEvaluationCache.Clear(); 252 testEvaluationCache.Clear(); 253 evaluationCache.Clear(); 225 254 IRegressionProblemData problemData = new RegressionProblemData(ProblemData.Dataset, 226 255 ProblemData.AllowedInputVariables, … … 251 280 public void AddRegressionSolutions(IEnumerable<IRegressionSolution> solutions) { 252 281 regressionSolutions.AddRange(solutions); 282 283 trainingEvaluationCache.Clear(); 284 testEvaluationCache.Clear(); 285 evaluationCache.Clear(); 253 286 } 254 287 public void RemoveRegressionSolutions(IEnumerable<IRegressionSolution> solutions) { 255 288 regressionSolutions.RemoveRange(solutions); 289 290 trainingEvaluationCache.Clear(); 291 testEvaluationCache.Clear(); 292 evaluationCache.Clear(); 256 293 } 257 294 … … 275 312 trainingPartitions[solution.Model] = solution.ProblemData.TrainingPartition; 276 313 testPartitions[solution.Model] = solution.ProblemData.TestPartition; 314 315 trainingEvaluationCache.Clear(); 316 testEvaluationCache.Clear(); 317 evaluationCache.Clear(); 277 318 } 278 319 … … 282 323 trainingPartitions.Remove(solution.Model); 283 324 testPartitions.Remove(solution.Model); 325 326 trainingEvaluationCache.Clear(); 327 testEvaluationCache.Clear(); 328 evaluationCache.Clear(); 284 329 } 285 330 } -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblemData.cs
r7842 r8430 95 95 #endregion 96 96 97 public ConstrainedValueParameter<StringValue> TargetVariableParameter {98 get { return ( ConstrainedValueParameter<StringValue>)Parameters[TargetVariableParameterName]; }97 public IConstrainedValueParameter<StringValue> TargetVariableParameter { 98 get { return (IConstrainedValueParameter<StringValue>)Parameters[TargetVariableParameterName]; } 99 99 } 100 100 public string TargetVariable { -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionSolution.cs
r7842 r8430 55 55 } 56 56 public override IEnumerable<double> EstimatedTrainingValues { 57 get { return GetEstimatedValues(ProblemData.TrainingIndi zes); }57 get { return GetEstimatedValues(ProblemData.TrainingIndices); } 58 58 } 59 59 public override IEnumerable<double> EstimatedTestValues { 60 get { return GetEstimatedValues(ProblemData.TestIndi zes); }60 get { return GetEstimatedValues(ProblemData.TestIndices); } 61 61 } 62 62 -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionSolutionBase.cs
r7842 r8430 138 138 OnlineCalculatorError errorState; 139 139 Add(new Result(TrainingMeanAbsoluteErrorResultName, "Mean of absolute errors of the model on the training partition", new DoubleValue())); 140 double trainingMAE = OnlineMeanAbsoluteErrorCalculator.Calculate(EstimatedTrainingValues, ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndi zes), out errorState);140 double trainingMAE = OnlineMeanAbsoluteErrorCalculator.Calculate(EstimatedTrainingValues, ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices), out errorState); 141 141 TrainingMeanAbsoluteError = errorState == OnlineCalculatorError.None ? trainingMAE : double.NaN; 142 142 } … … 145 145 OnlineCalculatorError errorState; 146 146 Add(new Result(TestMeanAbsoluteErrorResultName, "Mean of absolute errors of the model on the test partition", new DoubleValue())); 147 double testMAE = OnlineMeanAbsoluteErrorCalculator.Calculate(EstimatedTestValues, ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndi zes), out errorState);147 double testMAE = OnlineMeanAbsoluteErrorCalculator.Calculate(EstimatedTestValues, ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndices), out errorState); 148 148 TestMeanAbsoluteError = errorState == OnlineCalculatorError.None ? testMAE : double.NaN; 149 149 } … … 152 152 OnlineCalculatorError errorState; 153 153 Add(new Result(TrainingMeanErrorResultName, "Mean of errors of the model on the training partition", new DoubleValue())); 154 double trainingME = OnlineMeanErrorCalculator.Calculate(EstimatedTrainingValues, ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndi zes), out errorState);154 double trainingME = OnlineMeanErrorCalculator.Calculate(EstimatedTrainingValues, ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices), out errorState); 155 155 TrainingMeanError = errorState == OnlineCalculatorError.None ? trainingME : double.NaN; 156 156 } … … 158 158 OnlineCalculatorError errorState; 159 159 Add(new Result(TestMeanErrorResultName, "Mean of errors of the model on the test partition", new DoubleValue())); 160 double testME = OnlineMeanErrorCalculator.Calculate(EstimatedTestValues, ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndi zes), out errorState);160 double testME = OnlineMeanErrorCalculator.Calculate(EstimatedTestValues, ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndices), out errorState); 161 161 TestMeanError = errorState == OnlineCalculatorError.None ? testME : double.NaN; 162 162 } … … 166 166 protected void CalculateResults() { 167 167 IEnumerable<double> estimatedTrainingValues = EstimatedTrainingValues; // cache values 168 IEnumerable<double> originalTrainingValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndi zes);168 IEnumerable<double> originalTrainingValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices); 169 169 IEnumerable<double> estimatedTestValues = EstimatedTestValues; // cache values 170 IEnumerable<double> originalTestValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndi zes);170 IEnumerable<double> originalTestValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndices); 171 171 172 172 OnlineCalculatorError errorState; -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/Models/ConstantTimeSeriesPrognosisModel.cs
r8112 r8430 29 29 [StorableClass] 30 30 [Item("Constant TimeSeries Model", "A time series model that returns for all prediciton the same constant value.")] 31 public class TimeSeriesPrognosisConstantModel : NamedItem, ITimeSeriesPrognosisModel {31 public class ConstantTimeSeriesPrognosisModel : NamedItem, ITimeSeriesPrognosisModel { 32 32 [Storable] 33 33 public double Constant { get; private set; } 34 34 35 35 [StorableConstructor] 36 protected TimeSeriesPrognosisConstantModel(bool deserializing) : base(deserializing) { }37 protected TimeSeriesPrognosisConstantModel(TimeSeriesPrognosisConstantModel original, Cloner cloner)36 protected ConstantTimeSeriesPrognosisModel(bool deserializing) : base(deserializing) { } 37 protected ConstantTimeSeriesPrognosisModel(ConstantTimeSeriesPrognosisModel original, Cloner cloner) 38 38 : base(original, cloner) { 39 39 Constant = original.Constant; 40 40 } 41 41 public override IDeepCloneable Clone(Cloner cloner) { 42 return new TimeSeriesPrognosisConstantModel(this, cloner);42 return new ConstantTimeSeriesPrognosisModel(this, cloner); 43 43 } 44 44 45 public TimeSeriesPrognosisConstantModel(double constant) {45 public ConstantTimeSeriesPrognosisModel(double constant) { 46 46 Constant = constant; 47 47 } -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/Models/TimeSeriesPrognosisAutoRegressiveModel.cs
r8010 r8430 30 30 [Item("Autoregressive TimeSeries Model", "A linear autoregressive time series model used to predict future values.")] 31 31 public class TimeSeriesPrognosisAutoRegressiveModel : NamedItem, ITimeSeriesPrognosisModel { 32 //Currently it is only possible to calculate AR(1)33 //The paramater calculation for AR(p) is described in http://en.wikipedia.org/wiki/Autoregressive_model and should be inserted in the future34 35 32 [Storable] 36 public double Alpha{ get; private set; }33 public double[] Phi { get; private set; } 37 34 [Storable] 38 public double Beta{ get; private set; }35 public double Constant { get; private set; } 39 36 [Storable] 40 37 public string TargetVariable { get; private set; } … … 46 43 protected TimeSeriesPrognosisAutoRegressiveModel(TimeSeriesPrognosisAutoRegressiveModel original, Cloner cloner) 47 44 : base(original, cloner) { 48 this. Alpha = original.Alpha;49 this. Beta = original.Beta;45 this.Phi = (double[])original.Phi.Clone(); 46 this.Constant = original.Constant; 50 47 this.TargetVariable = original.TargetVariable; 51 48 this.TimeOffset = original.TimeOffset; … … 56 53 public TimeSeriesPrognosisAutoRegressiveModel(double alpha, double beta, string targetVariable) 57 54 : base() { 58 Alpha = alpha;59 Beta = beta;55 //Alpha = alpha; 56 //Beta = beta; 60 57 TargetVariable = targetVariable; 61 TimeOffset = -1;58 TimeOffset = 1; 62 59 } 63 60 … … 71 68 double[] prognosis = new double[horizon]; 72 69 73 if (row == 0) continue; 74 prognosis[0] = dataset.GetDoubleValue(TargetVariable, row + TimeOffset); 70 prognosis[0] = dataset.GetDoubleValue(TargetVariable, row - TimeOffset); 75 71 for (int i = 1; i < horizon; i++) { 76 prognosis[i] = Beta * prognosis[i - 1] + Alpha;72 //prognosis[i] = Beta * prognosis[i - 1] + Alpha; 77 73 } 78 74 yield return prognosis; -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/Models/TimeSeriesPrognosisMovingAverageModel.cs
r8010 r8430 61 61 int startIndex = row - WindowSize; 62 62 63 if (row == 0) continue;64 63 if (startIndex < 0) startIndex = 0; 65 64 int count = row - startIndex - 1; -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/TimeSeriesPrognosisSolutionBase.cs
r8010 r8430 194 194 OnlineCalculatorError errorState; 195 195 //mean model 196 double trainingMean = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndi zes).Average();197 var meanModel = new TimeSeriesPrognosisConstantModel(trainingMean);196 double trainingMean = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices).Average(); 197 var meanModel = new ConstantTimeSeriesPrognosisModel(trainingMean); 198 198 199 199 //AR1 model 200 200 double alpha, beta; 201 IEnumerable<double> trainingStartValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndi zes.Select(r => r - 1).Where(r => r > 0)).ToList();202 OnlineLinearScalingParameterCalculator.Calculate(ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndi zes.Where(x => x > 0)), trainingStartValues, out alpha, out beta, out errorState);201 IEnumerable<double> trainingStartValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices.Select(r => r - 1).Where(r => r > 0)).ToList(); 202 OnlineLinearScalingParameterCalculator.Calculate(ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices.Where(x => x > 0)), trainingStartValues, out alpha, out beta, out errorState); 203 203 var AR1model = new TimeSeriesPrognosisAutoRegressiveModel(alpha, beta, ProblemData.TargetVariable); 204 204 … … 208 208 209 209 #region Calculate training quality measures 210 var trainingHorizions = ProblemData.TrainingIndi zes.Select(r => Math.Min(horizon, ProblemData.TrainingPartition.End - r)).ToList();211 IEnumerable<IEnumerable<double>> trainingTargetValues = ProblemData.TrainingIndi zes.Zip(trainingHorizions, Enumerable.Range).Select(r => ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, r)).ToList();212 IEnumerable<IEnumerable<double>> trainingEstimatedValues = Model.GetPrognosedValues(ProblemData.Dataset, ProblemData.TrainingIndi zes, trainingHorizions).ToList();210 var trainingHorizions = ProblemData.TrainingIndices.Select(r => Math.Min(horizon, ProblemData.TrainingPartition.End - r)).ToList(); 211 IEnumerable<IEnumerable<double>> trainingTargetValues = ProblemData.TrainingIndices.Zip(trainingHorizions, Enumerable.Range).Select(r => ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, r)).ToList(); 212 IEnumerable<IEnumerable<double>> trainingEstimatedValues = Model.GetPrognosedValues(ProblemData.Dataset, ProblemData.TrainingIndices, trainingHorizions).ToList(); 213 213 214 214 TrainingMeanSquaredError = OnlineMeanSquaredErrorCalculator.Calculate(trainingTargetValues.SelectMany(x => x), trainingEstimatedValues.SelectMany(x => x), out errorState); … … 223 223 TrainingNormalizedMeanSquaredError = errorState == OnlineCalculatorError.None ? TrainingNormalizedMeanSquaredError : double.PositiveInfinity; 224 224 225 IEnumerable<IEnumerable<double>> trainingMeanModelPredictions = meanModel.GetPrognosedValues(ProblemData.Dataset, ProblemData.TrainingIndi zes, trainingHorizions);226 IEnumerable<IEnumerable<double>> trainingAR1ModelPredictions = AR1model.GetPrognosedValues(ProblemData.Dataset, ProblemData.TrainingIndi zes, trainingHorizions);227 IEnumerable<IEnumerable<double>> trainingMovingAverageModelPredictions = MovingAverageModel.GetPrognosedValues(ProblemData.Dataset, ProblemData.TrainingIndi zes, trainingHorizions);225 IEnumerable<IEnumerable<double>> trainingMeanModelPredictions = meanModel.GetPrognosedValues(ProblemData.Dataset, ProblemData.TrainingIndices, trainingHorizions); 226 IEnumerable<IEnumerable<double>> trainingAR1ModelPredictions = AR1model.GetPrognosedValues(ProblemData.Dataset, ProblemData.TrainingIndices, trainingHorizions); 227 IEnumerable<IEnumerable<double>> trainingMovingAverageModelPredictions = MovingAverageModel.GetPrognosedValues(ProblemData.Dataset, ProblemData.TrainingIndices, trainingHorizions); 228 228 229 229 TrainingDirectionalSymmetry = OnlineDirectionalSymmetryCalculator.Calculate(trainingStartValues, trainingTargetValues, trainingEstimatedValues, out errorState); … … 240 240 241 241 #region Calculate test quality measures 242 var testHorizions = ProblemData.TestIndi zes.Select(r => Math.Min(horizon, ProblemData.TestPartition.End - r)).ToList();243 IEnumerable<IEnumerable<double>> testTargetValues = ProblemData.TestIndi zes.Zip(testHorizions, Enumerable.Range).Select(r => ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, r)).ToList();244 IEnumerable<IEnumerable<double>> testEstimatedValues = Model.GetPrognosedValues(ProblemData.Dataset, ProblemData.TestIndi zes, testHorizions).ToList();242 var testHorizions = ProblemData.TestIndices.Select(r => Math.Min(horizon, ProblemData.TestPartition.End - r)).ToList(); 243 IEnumerable<IEnumerable<double>> testTargetValues = ProblemData.TestIndices.Zip(testHorizions, Enumerable.Range).Select(r => ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, r)).ToList(); 244 IEnumerable<IEnumerable<double>> testEstimatedValues = Model.GetPrognosedValues(ProblemData.Dataset, ProblemData.TestIndices, testHorizions).ToList(); 245 245 246 246 TestMeanSquaredError = OnlineMeanSquaredErrorCalculator.Calculate(testTargetValues.SelectMany(x => x), testEstimatedValues.SelectMany(x => x), out errorState); … … 255 255 TestNormalizedMeanSquaredError = errorState == OnlineCalculatorError.None ? TestNormalizedMeanSquaredError : double.PositiveInfinity; 256 256 257 IEnumerable<double> testStartValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndi zes.Select(r => r - 1).Where(r => r > 0)).ToList();258 IEnumerable<IEnumerable<double>> testMeanModelPredictions = meanModel.GetPrognosedValues(ProblemData.Dataset, ProblemData.TestIndi zes, testHorizions);259 IEnumerable<IEnumerable<double>> testAR1ModelPredictions = AR1model.GetPrognosedValues(ProblemData.Dataset, ProblemData.TestIndi zes, testHorizions);260 IEnumerable<IEnumerable<double>> testMovingAverageModelPredictions = MovingAverageModel.GetPrognosedValues(ProblemData.Dataset, ProblemData.TestIndi zes, testHorizions);257 IEnumerable<double> testStartValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndices.Select(r => r - 1).Where(r => r > 0)).ToList(); 258 IEnumerable<IEnumerable<double>> testMeanModelPredictions = meanModel.GetPrognosedValues(ProblemData.Dataset, ProblemData.TestIndices, testHorizions); 259 IEnumerable<IEnumerable<double>> testAR1ModelPredictions = AR1model.GetPrognosedValues(ProblemData.Dataset, ProblemData.TestIndices, testHorizions); 260 IEnumerable<IEnumerable<double>> testMovingAverageModelPredictions = MovingAverageModel.GetPrognosedValues(ProblemData.Dataset, ProblemData.TestIndices, testHorizions); 261 261 262 262 TestDirectionalSymmetry = OnlineDirectionalSymmetryCalculator.Calculate(testStartValues, testTargetValues, testEstimatedValues, out errorState); … … 270 270 TestTheilsUStatisticMovingAverage = OnlineTheilsUStatisticCalculator.Calculate(testStartValues, testTargetValues, testMovingAverageModelPredictions, testEstimatedValues, out errorState); 271 271 TestTheilsUStatisticMovingAverage = errorState == OnlineCalculatorError.None ? TestTheilsUStatisticMovingAverage : double.PositiveInfinity; ; ; 272 #endregion 272 #endregion 273 273 } 274 274 } -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IDataAnalysisProblemData.cs
r7268 r8430 36 36 IntRange TestPartition { get; } 37 37 38 IEnumerable<int> TrainingIndi zes { get; }39 IEnumerable<int> TestIndi zes { get; }38 IEnumerable<int> TrainingIndices { get; } 39 IEnumerable<int> TestIndices { get; } 40 40 41 41 bool IsTrainingSample(int index); -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/IOnlineCalculator.cs
r7268 r8430 24 24 namespace HeuristicLab.Problems.DataAnalysis { 25 25 [Flags] 26 public enum OnlineCalculatorError { 26 public enum OnlineCalculatorError { 27 27 /// <summary> 28 28 /// No error occurred 29 29 /// </summary> 30 None = 0, 30 None = 0, 31 31 /// <summary> 32 32 /// An invalid value has been added (often +/- Infinity and NaN are invalid values) 33 33 /// </summary> 34 InvalidValueAdded = 1, 34 InvalidValueAdded = 1, 35 35 /// <summary> 36 36 /// The number of elements added to the evaluator is not sufficient to calculate the result value -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineLinearScalingParameterCalculator.cs
r7268 r8430 55 55 } 56 56 57 private int cnt;58 57 private OnlineMeanAndVarianceCalculator targetMeanCalculator; 59 58 private OnlineMeanAndVarianceCalculator originalMeanAndVarianceCalculator; … … 68 67 69 68 public void Reset() { 70 cnt = 0;71 69 targetMeanCalculator.Reset(); 72 70 originalMeanAndVarianceCalculator.Reset(); … … 85 83 originalTargetCovarianceCalculator.Add(original, target); 86 84 87 cnt++;88 85 } 89 86 -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineTheilsUStatisticCalculator.cs
r8010 r8430 55 55 } 56 56 57 public void Add(double startValue, IEnumerable<double> referenceContinuation, IEnumerable<double> actualContinuation, IEnumerable<double> predictedContinuation) {57 public void Add(double startValue, IEnumerable<double> actualContinuation, IEnumerable<double> referenceContinuation, IEnumerable<double> predictedContinuation) { 58 58 if (double.IsNaN(startValue) || (errorState & OnlineCalculatorError.InvalidValueAdded) > 0) { 59 59 errorState = errorState | OnlineCalculatorError.InvalidValueAdded; -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Plugin.cs.frame
r7842 r8430 26 26 27 27 namespace HeuristicLab.Problems.DataAnalysis { 28 [Plugin("HeuristicLab.Problems.DataAnalysis","Provides base classes for data analysis tasks.", "3.4. 2.$WCREV$")]28 [Plugin("HeuristicLab.Problems.DataAnalysis","Provides base classes for data analysis tasks.", "3.4.3.$WCREV$")] 29 29 [PluginFile("HeuristicLab.Problems.DataAnalysis-3.4.dll", PluginFileType.Assembly)] 30 [PluginDependency("HeuristicLab.ALGLIB","3.5")] 30 31 [PluginDependency("HeuristicLab.Collections", "3.3")] 31 32 [PluginDependency("HeuristicLab.Common", "3.3")] -
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/Properties/AssemblyInfo.cs.frame
r7268 r8430 53 53 // by using the '*' as shown below: 54 54 [assembly: AssemblyVersion("3.4.0.0")] 55 [assembly: AssemblyFileVersion("3.4. 2.$WCREV$")]55 [assembly: AssemblyFileVersion("3.4.3.$WCREV$")]
Note: See TracChangeset
for help on using the changeset viewer.