Changeset 9363 for branches/OaaS/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/DiscriminantFunctionClassificationModel.cs
- Timestamp:
- 04/16/13 13:13:41 (11 years ago)
- Location:
- branches/OaaS
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/OaaS
- Property svn:ignore
-
old new 21 21 protoc.exe 22 22 _ReSharper.HeuristicLab 3.3 Tests 23 Google.ProtocolBuffers-2.4.1.473.dll 23 24 packages
-
- Property svn:mergeinfo changed
- Property svn:ignore
-
branches/OaaS/HeuristicLab.Problems.DataAnalysis
- Property svn:mergeinfo changed
-
branches/OaaS/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/DiscriminantFunctionClassificationModel.cs
r7259 r9363 33 33 [StorableClass] 34 34 [Item("DiscriminantFunctionClassificationModel", "Represents a classification model that uses a discriminant function and classification thresholds.")] 35 public abstractclass DiscriminantFunctionClassificationModel : NamedItem, IDiscriminantFunctionClassificationModel {35 public class DiscriminantFunctionClassificationModel : NamedItem, IDiscriminantFunctionClassificationModel { 36 36 [Storable] 37 37 private IRegressionModel model; 38 public IRegressionModel Model { 39 get { return model; } 40 private set { model = value; } 41 } 38 42 39 43 [Storable] … … 51 55 } 52 56 57 private IDiscriminantFunctionThresholdCalculator thresholdCalculator; 58 [Storable] 59 public IDiscriminantFunctionThresholdCalculator ThresholdCalculator { 60 get { return thresholdCalculator; } 61 private set { thresholdCalculator = value; } 62 } 63 53 64 54 65 [StorableConstructor] … … 61 72 } 62 73 63 public DiscriminantFunctionClassificationModel(IRegressionModel model )74 public DiscriminantFunctionClassificationModel(IRegressionModel model, IDiscriminantFunctionThresholdCalculator thresholdCalculator) 64 75 : base() { 65 76 this.name = ItemName; 66 77 this.description = ItemDescription; 67 78 this.model = model; 68 this.classValues = new double[] { 0.0 }; 69 this.thresholds = new double[] { double.NegativeInfinity }; 79 this.classValues = new double[0]; 80 this.thresholds = new double[0]; 81 this.thresholdCalculator = thresholdCalculator; 82 } 83 84 [StorableHook(HookType.AfterDeserialization)] 85 private void AfterDeserialization() { 86 if (ThresholdCalculator == null) ThresholdCalculator = new AccuracyMaximizationThresholdCalculator(); 87 } 88 89 public override IDeepCloneable Clone(Cloner cloner) { 90 return new DiscriminantFunctionClassificationModel(this, cloner); 70 91 } 71 92 … … 80 101 } 81 102 103 public virtual void RecalculateModelParameters(IClassificationProblemData problemData, IEnumerable<int> rows) { 104 double[] classValues; 105 double[] thresholds; 106 var targetClassValues = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, rows); 107 var estimatedTrainingValues = GetEstimatedValues(problemData.Dataset, rows); 108 thresholdCalculator.Calculate(problemData, estimatedTrainingValues, targetClassValues, out classValues, out thresholds); 109 SetThresholdsAndClassValues(thresholds, classValues); 110 } 111 112 82 113 public IEnumerable<double> GetEstimatedValues(Dataset dataset, IEnumerable<int> rows) { 83 114 return model.GetEstimatedValues(dataset, rows); … … 85 116 86 117 public IEnumerable<double> GetEstimatedClassValues(Dataset dataset, IEnumerable<int> rows) { 118 if (!Thresholds.Any() && !ClassValues.Any()) throw new ArgumentException("No thresholds and class values were set for the current classification model."); 87 119 foreach (var x in GetEstimatedValues(dataset, rows)) { 88 120 int classIndex = 0; … … 103 135 #endregion 104 136 105 public abstract IDiscriminantFunctionClassificationSolution CreateDiscriminantFunctionClassificationSolution(IClassificationProblemData problemData); 106 public abstract IClassificationSolution CreateClassificationSolution(IClassificationProblemData problemData); 137 public virtual IDiscriminantFunctionClassificationSolution CreateDiscriminantFunctionClassificationSolution(IClassificationProblemData problemData) { 138 return new DiscriminantFunctionClassificationSolution(this, new ClassificationProblemData(problemData)); 139 } 140 141 public virtual IClassificationSolution CreateClassificationSolution(IClassificationProblemData problemData) { 142 return CreateDiscriminantFunctionClassificationSolution(problemData); 143 } 107 144 } 108 145 }
Note: See TracChangeset
for help on using the changeset viewer.