Changeset 13941 for trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification
- Timestamp:
- 06/28/16 13:33:17 (8 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification
- Files:
-
- 1 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationEnsembleModel.cs
r13921 r13941 32 32 [StorableClass] 33 33 [Item("ClassificationEnsembleModel", "A classification model that contains an ensemble of multiple classification models")] 34 public class ClassificationEnsembleModel : NamedItem, IClassificationEnsembleModel {35 public IEnumerable<string> VariablesUsedForPrediction {34 public class ClassificationEnsembleModel : ClassificationModel, IClassificationEnsembleModel { 35 public override IEnumerable<string> VariablesUsedForPrediction { 36 36 get { return models.SelectMany(x => x.VariablesUsedForPrediction).Distinct().OrderBy(x => x); } 37 }38 39 public string TargetVariable {40 get { return models.First().TargetVariable; }41 37 } 42 38 … … 56 52 public ClassificationEnsembleModel() : this(Enumerable.Empty<IClassificationModel>()) { } 57 53 public ClassificationEnsembleModel(IEnumerable<IClassificationModel> models) 58 : base( ) {54 : base(string.Empty) { 59 55 this.name = ItemName; 60 56 this.description = ItemDescription; 61 57 this.models = new List<IClassificationModel>(models); 58 59 if (this.models.Any()) this.TargetVariable = this.models.First().TargetVariable; 62 60 } 63 61 … … 66 64 } 67 65 68 #region IClassificationEnsembleModel Members69 66 public void Add(IClassificationModel model) { 67 if (string.IsNullOrEmpty(TargetVariable)) TargetVariable = model.TargetVariable; 70 68 models.Add(model); 71 69 } 72 70 public void Remove(IClassificationModel model) { 73 71 models.Remove(model); 72 if (!models.Any()) TargetVariable = string.Empty; 74 73 } 75 74 … … 85 84 } 86 85 87 #endregion88 86 89 #region IClassificationModel Members 90 91 public IEnumerable<double> GetEstimatedClassValues(IDataset dataset, IEnumerable<int> rows) { 87 public override IEnumerable<double> GetEstimatedClassValues(IDataset dataset, IEnumerable<int> rows) { 92 88 foreach (var estimatedValuesVector in GetEstimatedClassValueVectors(dataset, rows)) { 93 89 // return the class which is most often occuring … … 101 97 } 102 98 103 IClassificationSolution IClassificationModel.CreateClassificationSolution(IClassificationProblemData problemData) {99 public override IClassificationSolution CreateClassificationSolution(IClassificationProblemData problemData) { 104 100 return new ClassificationEnsembleSolution(models, new ClassificationEnsembleProblemData(problemData)); 105 101 } 106 #endregion 102 103 107 104 } 108 105 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/DiscriminantFunctionClassificationModel.cs
r13921 r13941 33 33 [StorableClass] 34 34 [Item("DiscriminantFunctionClassificationModel", "Represents a classification model that uses a discriminant function and classification thresholds.")] 35 public class DiscriminantFunctionClassificationModel : NamedItem, IDiscriminantFunctionClassificationModel {36 public IEnumerable<string> VariablesUsedForPrediction {35 public class DiscriminantFunctionClassificationModel : ClassificationModel, IDiscriminantFunctionClassificationModel { 36 public override IEnumerable<string> VariablesUsedForPrediction { 37 37 get { return model.VariablesUsedForPrediction; } 38 38 } 39 40 public string TargetVariable { get { return model.TargetVariable; } }41 39 42 40 [Storable] … … 79 77 80 78 public DiscriminantFunctionClassificationModel(IRegressionModel model, IDiscriminantFunctionThresholdCalculator thresholdCalculator) 81 : base( ) {79 : base(model.TargetVariable) { 82 80 this.name = ItemName; 83 81 this.description = ItemDescription; 82 84 83 this.model = model; 85 84 this.classValues = new double[0]; … … 121 120 } 122 121 123 public IEnumerable<double> GetEstimatedClassValues(IDataset dataset, IEnumerable<int> rows) {122 public override IEnumerable<double> GetEstimatedClassValues(IDataset dataset, IEnumerable<int> rows) { 124 123 if (!Thresholds.Any() && !ClassValues.Any()) throw new ArgumentException("No thresholds and class values were set for the current classification model."); 125 124 foreach (var x in GetEstimatedValues(dataset, rows)) { … … 141 140 #endregion 142 141 143 public virtual IDiscriminantFunctionClassificationSolution CreateDiscriminantFunctionClassificationSolution(IClassificationProblemData problemData) { 142 public override IClassificationSolution CreateClassificationSolution(IClassificationProblemData problemData) { 143 return CreateDiscriminantFunctionClassificationSolution(problemData); 144 } 145 public virtual IDiscriminantFunctionClassificationSolution CreateDiscriminantFunctionClassificationSolution( 146 IClassificationProblemData problemData) { 144 147 return new DiscriminantFunctionClassificationSolution(this, new ClassificationProblemData(problemData)); 145 }146 147 public virtual IClassificationSolution CreateClassificationSolution(IClassificationProblemData problemData) {148 return CreateDiscriminantFunctionClassificationSolution(problemData);149 148 } 150 149 }
Note: See TracChangeset
for help on using the changeset viewer.