Changeset 18027 for branches/3026_IntegrationIntoSymSpace/HeuristicLab.Problems.DataAnalysis/3.4/Implementation
- Timestamp:
- 07/20/21 18:13:55 (4 years ago)
- Location:
- branches/3026_IntegrationIntoSymSpace
- Files:
-
- 2 deleted
- 8 edited
- 4 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/3026_IntegrationIntoSymSpace
-
branches/3026_IntegrationIntoSymSpace/HeuristicLab.Problems.DataAnalysis
- Property svn:mergeinfo changed
/trunk/HeuristicLab.Problems.DataAnalysis merged: 17931,17937,17958,17960-17964,17981-17982,17999-18000
- Property svn:mergeinfo changed
-
branches/3026_IntegrationIntoSymSpace/HeuristicLab.Problems.DataAnalysis/3.4
- Property svn:mergeinfo changed
/trunk/HeuristicLab.Problems.DataAnalysis/3.4 merged: 17931,17937,17958,17960-17964,17981-17982,17999-18000
- Property svn:mergeinfo changed
-
branches/3026_IntegrationIntoSymSpace/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationSolutionBase.cs
r17180 r18027 34 34 private const string TrainingAccuracyResultName = "Accuracy (training)"; 35 35 private const string TestAccuracyResultName = "Accuracy (test)"; 36 private const string TrainingNormalizedGiniCoefficientResultName = "Norm alized Gini Coefficient(training)";37 private const string TestNormalizedGiniCoefficientResultName = "Norm alized Gini Coefficient(test)";36 private const string TrainingNormalizedGiniCoefficientResultName = "Norm. Gini coeff. (training)"; 37 private const string TestNormalizedGiniCoefficientResultName = "Norm. Gini coeff. (test)"; 38 38 private const string ClassificationPerformanceMeasuresResultName = "Classification Performance Measures"; 39 39 … … 97 97 if (string.IsNullOrEmpty(Model.TargetVariable)) 98 98 Model.TargetVariable = this.ProblemData.TargetVariable; 99 100 if (!this.ContainsKey(TrainingNormalizedGiniCoefficientResultName)) 99 var newResult = false; 100 if (!this.ContainsKey(TrainingNormalizedGiniCoefficientResultName)) { 101 101 Add(new Result(TrainingNormalizedGiniCoefficientResultName, "Normalized Gini coefficient of the model on the training partition.", new DoubleValue())); 102 if (!this.ContainsKey(TestNormalizedGiniCoefficientResultName)) 102 newResult = true; 103 } 104 if (!this.ContainsKey(TestNormalizedGiniCoefficientResultName)) { 103 105 Add(new Result(TestNormalizedGiniCoefficientResultName, "Normalized Gini coefficient of the model on the test partition.", new DoubleValue())); 106 newResult = true; 107 } 104 108 if (!this.ContainsKey(ClassificationPerformanceMeasuresResultName)) { 105 109 Add(new Result(ClassificationPerformanceMeasuresResultName, @"Classification performance measures.\n 106 110 In a multiclass classification all misclassifications of the negative class will be treated as true negatives except on positive class estimations.", 107 111 new ClassificationPerformanceMeasuresResultCollection())); 108 CalculateClassificationResults();112 newResult = true; 109 113 } 114 if (newResult) CalculateClassificationResults(); 110 115 } 111 116 -
branches/3026_IntegrationIntoSymSpace/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/DiscriminantFunctionClassificationSolutionBase.cs
r17180 r18027 40 40 private const string TrainingRSquaredResultName = "Pearson's R² (training)"; 41 41 private const string TestRSquaredResultName = "Pearson's R² (test)"; 42 private const string TrainingNormalizedGiniCoefficientResultName = "Norm. Gini coeff. (training, discriminant values)"; 43 private const string TestNormalizedGiniCoefficientResultName = "Norm. Gini coeff. (test, discriminant values)"; 44 42 45 43 46 public new IDiscriminantFunctionClassificationModel Model { … … 71 74 private set { ((DoubleValue)this[TestRSquaredResultName].Value).Value = value; } 72 75 } 76 public double TrainingNormalizedGiniCoefficientForDiscriminantValues { 77 get { return ((DoubleValue)this[TrainingNormalizedGiniCoefficientResultName].Value).Value; } 78 protected set { ((DoubleValue)this[TrainingNormalizedGiniCoefficientResultName].Value).Value = value; } 79 } 80 public double TestNormalizedGiniCoefficientForDiscriminantValues { 81 get { return ((DoubleValue)this[TestNormalizedGiniCoefficientResultName].Value).Value; } 82 protected set { ((DoubleValue)this[TestNormalizedGiniCoefficientResultName].Value).Value = value; } 83 } 73 84 #endregion 74 85 … … 85 96 Add(new Result(TrainingRSquaredResultName, "Squared Pearson's correlation coefficient of the model output and the actual values on the training partition", new DoubleValue())); 86 97 Add(new Result(TestRSquaredResultName, "Squared Pearson's correlation coefficient of the model output and the actual values on the test partition", new DoubleValue())); 98 Add(new Result(TrainingNormalizedGiniCoefficientResultName, "Normalized Gini coefficient of the discriminant values produced by the model on the training partition.", new DoubleValue())); 99 Add(new Result(TestNormalizedGiniCoefficientResultName, "Normalized Gini coefficient of the discriminant values produced by the model on the test partition.", new DoubleValue())); 87 100 RegisterEventHandler(); 88 101 } … … 90 103 [StorableHook(HookType.AfterDeserialization)] 91 104 private void AfterDeserialization() { 105 #region backwards compatibility 106 if (!ContainsKey(TrainingNormalizedGiniCoefficientResultName)) { 107 Add(new Result(TrainingNormalizedGiniCoefficientResultName, "Normalized Gini coefficient of the discriminant values produced by the model on the training partition.", new DoubleValue())); 108 Add(new Result(TestNormalizedGiniCoefficientResultName, "Normalized Gini coefficient of the discriminant values produced by the model on the test partition.", new DoubleValue())); 109 double[] estimatedTrainingValues = EstimatedTrainingValues.ToArray(); // cache values 110 double[] originalTrainingValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TrainingIndices).ToArray(); 111 double[] estimatedTestValues = EstimatedTestValues.ToArray(); // cache values 112 double[] originalTestValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndices).ToArray(); 113 double trainingNormalizedGini = NormalizedGiniCalculator.Calculate(originalTrainingValues, estimatedTrainingValues, out var errorState); 114 if (errorState != OnlineCalculatorError.None) trainingNormalizedGini = double.NaN; 115 double testNormalizedGini = NormalizedGiniCalculator.Calculate(originalTestValues, estimatedTestValues, out errorState); 116 if (errorState != OnlineCalculatorError.None) testNormalizedGini = double.NaN; 117 118 TrainingNormalizedGiniCoefficientForDiscriminantValues = trainingNormalizedGini; 119 TestNormalizedGiniCoefficientForDiscriminantValues = testNormalizedGini; 120 } 121 #endregion 92 122 RegisterEventHandler(); 93 123 } … … 106 136 107 137 double trainingR = OnlinePearsonsRCalculator.Calculate(originalTrainingValues, estimatedTrainingValues, out errorState); 108 TrainingRSquared = errorState == OnlineCalculatorError.None ? trainingR *trainingR : double.NaN;138 TrainingRSquared = errorState == OnlineCalculatorError.None ? trainingR * trainingR : double.NaN; 109 139 double testR = OnlinePearsonsRCalculator.Calculate(originalTestValues, estimatedTestValues, out errorState); 110 TestRSquared = errorState == OnlineCalculatorError.None ? testR *testR : double.NaN;140 TestRSquared = errorState == OnlineCalculatorError.None ? testR * testR : double.NaN; 111 141 112 142 double trainingNormalizedGini = NormalizedGiniCalculator.Calculate(originalTrainingValues, estimatedTrainingValues, out errorState); … … 115 145 if (errorState != OnlineCalculatorError.None) testNormalizedGini = double.NaN; 116 146 117 TrainingNormalizedGiniCoefficient = trainingNormalizedGini;118 TestNormalizedGiniCoefficient = testNormalizedGini;147 TrainingNormalizedGiniCoefficientForDiscriminantValues = trainingNormalizedGini; 148 TestNormalizedGiniCoefficientForDiscriminantValues = testNormalizedGini; 119 149 } 120 150 -
branches/3026_IntegrationIntoSymSpace/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/Interval.cs
- Property svn:mergeinfo changed
/trunk/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval/Interval.cs merged: 17963
r17928 r18027 78 78 if (double.IsNegativeInfinity(LowerBound) && double.IsPositiveInfinity(UpperBound)) return true; 79 79 if (other.LowerBound >= LowerBound && other.UpperBound <= UpperBound) return true; 80 80 81 81 return false; 82 82 } … … 97 97 /// </summary> 98 98 public bool IsPositive { 99 get => LowerBound > 0.0; 99 get => LowerBound > 0.0; 100 100 } 101 101 … … 130 130 return false; 131 131 132 return (UpperBound ==other.UpperBound || (double.IsNaN(UpperBound) && double.IsNaN(other.UpperBound)))133 && (LowerBound ==other.LowerBound || (double.IsNaN(LowerBound) && double.IsNaN(other.LowerBound)));132 return (UpperBound == other.UpperBound || (double.IsNaN(UpperBound) && double.IsNaN(other.UpperBound))) 133 && (LowerBound == other.LowerBound || (double.IsNaN(LowerBound) && double.IsNaN(other.LowerBound))); 134 134 } 135 135 … … 238 238 public static Interval Cube(Interval a) { 239 239 return new Interval(Math.Pow(a.LowerBound, 3), Math.Pow(a.UpperBound, 3)); 240 } 241 242 public static Interval Power(Interval a, int b) { 243 if (b < 0) return Power(1.0 / a, -b); // a^(-b) = 1/(a^b) 244 if (b == 0 && (a.Contains(0.0) || a.IsInfiniteOrUndefined)) return new Interval(double.NaN, double.NaN); // 0^0, +/-inf^0 are undefined 245 if (b == 0) return new Interval(1.0, 1.0); // x^0 = 1 246 if (b == 1) return a; 247 if (b % 2 == 0) { 248 // even powers (see x²) 249 if (a.UpperBound <= 0) return new Interval(Math.Pow(a.UpperBound, b), Math.Pow(a.LowerBound, b)); // interval is negative 250 if (a.LowerBound >= 0) return new Interval(Math.Pow(a.LowerBound, b), Math.Pow(a.UpperBound, b)); // interval is positive 251 return new Interval(0, Math.Max(Math.Pow(a.LowerBound, b), Math.Pow(a.UpperBound, b))); // interval goes over zero 252 } else { 253 // odd powers (see x³) 254 return new Interval(Math.Pow(a.LowerBound, b), Math.Pow(a.UpperBound, b)); 255 } 240 256 } 241 257 - Property svn:mergeinfo changed
-
branches/3026_IntegrationIntoSymSpace/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblemData.cs
r17928 r18027 35 35 protected const string TargetVariableParameterName = "TargetVariable"; 36 36 protected const string VariableRangesParameterName = "VariableRanges"; 37 protected const string ShapeConstraintsParameterName = "ShapeConstraints";38 37 public string Filename { get; set; } 39 38 … … 78 77 defaultDataset = new Dataset(new string[] { "y", "x" }, kozaF1); 79 78 defaultDataset.Name = "Fourth-order Polynomial Function Benchmark Dataset"; 80 defaultDataset.Description = "f(x) = x^4 + x^3 + x^2 + x ^1";79 defaultDataset.Description = "f(x) = x^4 + x^3 + x^2 + x"; 81 80 defaultAllowedInputVariables = new List<string>() { "x" }; 82 81 defaultTargetVariable = "y"; … … 94 93 problemData.Parameters.Add(new ConstrainedValueParameter<StringValue>(TargetVariableParameterName, new ItemSet<StringValue>())); 95 94 problemData.Parameters.Add(new FixedValueParameter<IntervalCollection>(VariableRangesParameterName, "", new IntervalCollection())); 96 problemData.Parameters.Add(new FixedValueParameter<ShapeConstraints>(ShapeConstraintsParameterName, "", new ShapeConstraints()));97 95 emptyProblemData = problemData; 98 96 } … … 101 99 #region parameter properties 102 100 public IConstrainedValueParameter<StringValue> TargetVariableParameter => (IConstrainedValueParameter<StringValue>)Parameters[TargetVariableParameterName]; 103 public IFixedValueParameter<ShapeConstraints> ShapeConstraintsParameter => (IFixedValueParameter<ShapeConstraints>)Parameters[ShapeConstraintsParameterName];104 101 public IFixedValueParameter<IntervalCollection> VariableRangesParameter => (IFixedValueParameter<IntervalCollection>)Parameters[VariableRangesParameterName]; 105 102 #endregion … … 109 106 get => VariableRangesParameter.Value; 110 107 } 111 112 113 public ShapeConstraints ShapeConstraints => ShapeConstraintsParameter.Value;114 115 108 116 109 public string TargetVariable { … … 137 130 private void AfterDeserialization() { 138 131 if (!Parameters.ContainsKey(VariableRangesParameterName)) { 139 var intervalCollection = Dataset.GetIntervals(); 140 Parameters.Add(new FixedValueParameter<IntervalCollection>(VariableRangesParameterName, intervalCollection)); 141 } 142 if (Parameters.ContainsKey("IntervalConstraints")) { 143 var param = (IFixedValueParameter<ShapeConstraints>)Parameters["IntervalConstraints"]; 144 Parameters.Remove(param); 145 Parameters.Add(new FixedValueParameter<ShapeConstraints>(ShapeConstraintsParameterName, param.Value)); 146 } 147 if (!Parameters.ContainsKey(ShapeConstraintsParameterName)) { 148 Parameters.Add(new FixedValueParameter<ShapeConstraints>(ShapeConstraintsParameterName, new ShapeConstraints())); 132 var variableRanges = Dataset.GetVariableRanges(); 133 Parameters.Add(new FixedValueParameter<IntervalCollection>(VariableRangesParameterName, variableRanges)); 149 134 } 150 135 … … 174 159 public RegressionProblemData(IDataset dataset, IEnumerable<string> allowedInputVariables, string targetVariable, 175 160 IEnumerable<ITransformation> transformations = null, 176 IntervalCollection variableRanges = null, 177 ShapeConstraints shapeConstraints = null) 161 IntervalCollection variableRanges = null) 178 162 : base(dataset, allowedInputVariables, transformations ?? Enumerable.Empty<ITransformation>()) { 179 163 var variables = InputVariables.Select(x => x.AsReadOnly()).ToList(); 180 164 Parameters.Add(new ConstrainedValueParameter<StringValue>(TargetVariableParameterName, new ItemSet<StringValue>(variables), variables.Where(x => x.Value == targetVariable).First())); 181 165 if (variableRanges == null) { 182 variableRanges = Dataset.Get Intervals();166 variableRanges = Dataset.GetVariableRanges(); 183 167 } 184 168 Parameters.Add(new FixedValueParameter<IntervalCollection>(VariableRangesParameterName, variableRanges)); 185 186 if (shapeConstraints == null) {187 shapeConstraints = new ShapeConstraints();188 }189 Parameters.Add(new FixedValueParameter<ShapeConstraints>(ShapeConstraintsParameterName, shapeConstraints));190 RegisterParameterEvents();191 169 } 192 170 private void RegisterParameterEvents() { 193 171 TargetVariableParameter.ValueChanged += new EventHandler(Parameter_ValueChanged); 194 // VariableRanges a nd ShapeConstraints are fixed parameters172 // VariableRanges are fixed parameters 195 173 } 196 174 private void Parameter_ValueChanged(object sender, EventArgs e) { -
branches/3026_IntegrationIntoSymSpace/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/ShapeConstraints.cs
r17928 r18027 77 77 public event EventHandler Changed; 78 78 79 79 80 private void RaiseChanged() { 80 81 var handlers = Changed;
Note: See TracChangeset
for help on using the changeset viewer.