- Timestamp:
- 10/19/18 13:27:06 (6 years ago)
- Location:
- trunk/HeuristicLab.Problems.DataAnalysis/3.4/Implementation
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationModel.cs
r15583 r16243 66 66 public abstract IClassificationSolution CreateClassificationSolution(IClassificationProblemData problemData); 67 67 68 public virtual bool IsProblemDataCompatible(IClassificationProblemData problemData, out string errorMessage) { 69 return IsProblemDataCompatible(this, problemData, out errorMessage); 70 } 71 72 public override bool IsProblemDataCompatible(IDataAnalysisProblemData problemData, out string errorMessage) { 73 if (problemData == null) throw new ArgumentNullException("problemData", "The provided problemData is null."); 74 var classificationProblemData = problemData as IClassificationProblemData; 75 if (classificationProblemData == null) 76 throw new ArgumentException("The problem data is not a regression problem data. Instead a " + problemData.GetType().GetPrettyName() + " was provided.", "problemData"); 77 return IsProblemDataCompatible(classificationProblemData, out errorMessage); 78 } 79 80 public static bool IsProblemDataCompatible(IClassificationModel model, IClassificationProblemData problemData, out string errorMessage) { 81 if (model == null) throw new ArgumentNullException("model", "The provided model is null."); 82 if (problemData == null) throw new ArgumentNullException("problemData", "The provided problemData is null."); 83 errorMessage = string.Empty; 84 85 if (model.TargetVariable != problemData.TargetVariable) 86 errorMessage = string.Format("The target variable of the model {0} does not match the target variable of the problemData {1}.", model.TargetVariable, problemData.TargetVariable); 87 88 var evaluationErrorMessage = string.Empty; 89 var datasetCompatible = model.IsDatasetCompatible(problemData.Dataset, out evaluationErrorMessage); 90 if (!datasetCompatible) 91 errorMessage += evaluationErrorMessage; 92 93 return string.IsNullOrEmpty(errorMessage); 94 } 95 68 96 #region events 69 97 public event EventHandler TargetVariableChanged; -
trunk/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/ConstantModel.cs
r15583 r16243 83 83 } 84 84 85 public virtual bool IsProblemDataCompatible(IClassificationProblemData problemData, out string errorMessage) { 86 return ClassificationModel.IsProblemDataCompatible(this, problemData, out errorMessage); 87 } 88 89 public override bool IsProblemDataCompatible(IDataAnalysisProblemData problemData, out string errorMessage) { 90 if (problemData == null) throw new ArgumentNullException("problemData", "The provided problemData is null."); 91 92 var regressionProblemData = problemData as IRegressionProblemData; 93 if (regressionProblemData != null) 94 return IsProblemDataCompatible(regressionProblemData, out errorMessage); 95 96 var classificationProblemData = problemData as IClassificationProblemData; 97 if (classificationProblemData != null) 98 return IsProblemDataCompatible(classificationProblemData, out errorMessage); 99 100 throw new ArgumentException("The problem data is not a regression nor a classification problem data. Instead a " + problemData.GetType().GetPrettyName() + " was provided.", "problemData"); 101 } 102 85 103 #region IStringConvertibleValue 86 104 public bool ReadOnly { get; private set; } -
trunk/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/DataAnalysisModel.cs
r15583 r16243 20 20 #endregion 21 21 22 using System; 22 23 using System.Collections.Generic; 23 24 using HeuristicLab.Common; … … 38 39 39 40 public abstract IEnumerable<string> VariablesUsedForPrediction { get; } 41 42 public virtual bool IsDatasetCompatible(IDataset dataset, out string errorMessage) { 43 if (dataset == null) throw new ArgumentNullException("dataset", "The provided dataset is null."); 44 return IsDatasetCompatible(this, dataset, out errorMessage); 45 } 46 47 public abstract bool IsProblemDataCompatible(IDataAnalysisProblemData problemData, out string errorMessage); 48 49 public static bool IsDatasetCompatible(IDataAnalysisModel model, IDataset dataset, out string errorMessage) { 50 if(model == null) throw new ArgumentNullException("model", "The provided model is null."); 51 if (dataset == null) throw new ArgumentNullException("dataset", "The provided dataset is null."); 52 errorMessage = string.Empty; 53 54 foreach (var variable in model.VariablesUsedForPrediction) { 55 if (!dataset.ContainsVariable(variable)) { 56 if (string.IsNullOrEmpty(errorMessage)) { 57 errorMessage = "The following variables must be present in the dataset for model evaluation:"; 58 } 59 errorMessage += System.Environment.NewLine + " " + variable; 60 } 61 } 62 63 return string.IsNullOrEmpty(errorMessage); 64 } 40 65 } 41 66 } -
trunk/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionModel.cs
r15583 r16243 67 67 public abstract IRegressionSolution CreateRegressionSolution(IRegressionProblemData problemData); 68 68 69 public virtual bool IsProblemDataCompatible(IRegressionProblemData problemData, out string errorMessage) { 70 return IsProblemDataCompatible(this, problemData, out errorMessage); 71 } 72 73 public override bool IsProblemDataCompatible(IDataAnalysisProblemData problemData, out string errorMessage) { 74 if (problemData == null) throw new ArgumentNullException("problemData", "The provided problemData is null."); 75 var regressionProblemData = problemData as IRegressionProblemData; 76 if (regressionProblemData == null) 77 throw new ArgumentException("The problem data is not a regression problem data. Instead a " + problemData.GetType().GetPrettyName() + " was provided.", "problemData"); 78 return IsProblemDataCompatible(regressionProblemData, out errorMessage); 79 } 80 81 public static bool IsProblemDataCompatible(IRegressionModel model, IRegressionProblemData problemData, out string errorMessage) { 82 if (model == null) throw new ArgumentNullException("model", "The provided model is null."); 83 if (problemData == null) throw new ArgumentNullException("problemData", "The provided problemData is null."); 84 errorMessage = string.Empty; 85 86 if (model.TargetVariable != problemData.TargetVariable) 87 errorMessage = string.Format("The target variable of the model {0} does not match the target variable of the problemData {1}.", model.TargetVariable, problemData.TargetVariable); 88 89 var evaluationErrorMessage = string.Empty; 90 var datasetCompatible = model.IsDatasetCompatible(problemData.Dataset, out evaluationErrorMessage); 91 if (!datasetCompatible) 92 errorMessage += evaluationErrorMessage; 93 94 return string.IsNullOrEmpty(errorMessage); 95 } 96 69 97 #region events 70 98 public event EventHandler TargetVariableChanged;
Note: See TracChangeset
for help on using the changeset viewer.