- Timestamp:
- 03/05/14 15:08:11 (10 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationProblemData.cs
r9456 r10540 221 221 public string TargetVariable { 222 222 get { return TargetVariableParameter.Value.Value; } 223 set { 224 if (value == null) throw new ArgumentNullException("targetVariable", "The provided value for the targetVariable is null."); 225 if (value == TargetVariable) return; 226 227 228 var matchingParameterValue = TargetVariableParameter.ValidValues.FirstOrDefault(v => v.Value == value); 229 if (matchingParameterValue == null) throw new ArgumentException("The provided value is not valid as the targetVariable.", "targetVariable"); 230 TargetVariableParameter.Value = matchingParameterValue; 231 } 223 232 } 224 233 … … 408 417 } 409 418 #endregion 419 420 protected override bool IsProblemDataCompatible(IDataAnalysisProblemData problemData, out string errorMessage) { 421 if (problemData == null) throw new ArgumentNullException("problemData", "The provided problemData is null."); 422 IClassificationProblemData classificationProblemData = problemData as IClassificationProblemData; 423 if (classificationProblemData == null) 424 throw new ArgumentException("The problem data is no classification problem data. Instead a " + problemData.GetType().GetPrettyName() + " was provided.", "problemData"); 425 426 var returnValue = base.IsProblemDataCompatible(classificationProblemData, out errorMessage); 427 //check targetVariable 428 if (classificationProblemData.InputVariables.All(var => var.Value != TargetVariable)) { 429 errorMessage = string.Format("The target variable {0} is not present in the new problem data.", TargetVariable) 430 + Environment.NewLine + errorMessage; 431 return false; 432 } 433 434 var newClassValues = classificationProblemData.Dataset.GetDoubleValues(TargetVariable).Distinct().OrderBy(x => x); 435 if (!newClassValues.SequenceEqual(ClassValues)) { 436 errorMessage = errorMessage + string.Format("The class values differ in the provided classification problem data."); 437 return false; 438 } 439 440 return returnValue; 441 } 442 443 public override void AdjustProblemDataProperties(IDataAnalysisProblemData problemData) { 444 if (problemData == null) throw new ArgumentNullException("problemData", "The provided problemData is null."); 445 ClassificationProblemData classificationProblemData = problemData as ClassificationProblemData; 446 if (classificationProblemData == null) 447 throw new ArgumentException("The problem data is not a classification problem data. Instead a " + problemData.GetType().GetPrettyName() + " was provided.", "problemData"); 448 449 base.AdjustProblemDataProperties(problemData); 450 TargetVariable = classificationProblemData.TargetVariable; 451 for (int i = 0; i < classificationProblemData.ClassNames.Count(); i++) 452 ClassNamesParameter.Value[i, 0] = classificationProblemData.ClassNames.ElementAt(i); 453 454 for (int i = 0; i < Classes; i++) { 455 for (int j = 0; j < Classes; j++) { 456 ClassificationPenaltiesParameter.Value[i, j] = classificationProblemData.GetClassificationPenalty(ClassValuesCache[i], ClassValuesCache[j]); 457 } 458 } 459 } 410 460 } 411 461 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/DataAnalysisProblemData.cs
r9456 r10540 23 23 using System.Collections.Generic; 24 24 using System.Linq; 25 using System.Text; 25 26 using HeuristicLab.Collections; 26 27 using HeuristicLab.Common; … … 158 159 if (listeners != null) listeners(this, EventArgs.Empty); 159 160 } 161 162 protected virtual bool IsProblemDataCompatible(IDataAnalysisProblemData problemData, out string errorMessage) { 163 errorMessage = string.Empty; 164 if (problemData == null) throw new ArgumentNullException("problemData", "The provided problemData is null."); 165 166 //check allowed input variables 167 StringBuilder message = new StringBuilder(); 168 var variables = new HashSet<string>(problemData.InputVariables.Select(x => x.Value)); 169 foreach (var item in AllowedInputVariables) { 170 if (!variables.Contains(item)) 171 message.AppendLine("Input variable '" + item + "' is not present in the new problem data."); 172 } 173 174 if (message.Length != 0) { 175 errorMessage = message.ToString(); 176 return false; 177 } 178 return true; 179 180 } 181 182 public virtual void AdjustProblemDataProperties(IDataAnalysisProblemData problemData) { 183 DataAnalysisProblemData data = problemData as DataAnalysisProblemData; 184 if (data == null) throw new ArgumentException("The problem data is not a data analysis problem data. Instead a " + problemData.GetType().GetPrettyName() + " was provided.", "problemData"); 185 186 string errorMessage; 187 if (!data.IsProblemDataCompatible(this, out errorMessage)) { 188 throw new InvalidOperationException(errorMessage); 189 } 190 191 foreach (var inputVariable in InputVariables) { 192 var variable = data.InputVariables.FirstOrDefault(i => i.Value == inputVariable.Value); 193 InputVariables.SetItemCheckedState(inputVariable, variable != null && data.InputVariables.ItemChecked(variable)); 194 } 195 196 TrainingPartition.Start = TrainingPartition.End = 0; 197 TestPartition.Start = 0; 198 TestPartition.End = Dataset.Rows; 199 } 160 200 } 161 201 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionProblemData.cs
r9456 r10540 100 100 public string TargetVariable { 101 101 get { return TargetVariableParameter.Value.Value; } 102 set { 103 if (value == null) throw new ArgumentNullException("targetVariable", "The provided value for the targetVariable is null."); 104 if (value == TargetVariable) return; 105 106 var matchingParameterValue = TargetVariableParameter.ValidValues.FirstOrDefault(v => v.Value == value); 107 if (matchingParameterValue == null) throw new ArgumentException("The provided value is not valid as the targetVariable.", "targetVariable"); 108 TargetVariableParameter.Value = matchingParameterValue; 109 } 102 110 } 103 111 … … 142 150 OnChanged(); 143 151 } 152 153 protected override bool IsProblemDataCompatible(IDataAnalysisProblemData problemData, out string errorMessage) { 154 if (problemData == null) throw new ArgumentNullException("problemData", "The provided problemData is null."); 155 IRegressionProblemData regressionProblemData = problemData as IRegressionProblemData; 156 if (regressionProblemData == null) 157 throw new ArgumentException("The problem data is not a regression problem data. Instead a " + problemData.GetType().GetPrettyName() + " was provided.", "problemData"); 158 159 var returnValue = base.IsProblemDataCompatible(problemData, out errorMessage); 160 //check targetVariable 161 if (problemData.InputVariables.All(var => var.Value != TargetVariable)) { 162 errorMessage = string.Format("The target variable {0} is not present in the new problem data.", TargetVariable) 163 + Environment.NewLine + errorMessage; 164 return false; 165 } 166 return returnValue; 167 } 168 169 public override void AdjustProblemDataProperties(IDataAnalysisProblemData problemData) { 170 if (problemData == null) throw new ArgumentNullException("problemData", "The provided problemData is null."); 171 RegressionProblemData regressionProblemData = problemData as RegressionProblemData; 172 if (regressionProblemData == null) 173 throw new ArgumentException("The problem data is not a regression problem data. Instead a " + problemData.GetType().GetPrettyName() + " was provided.", "problemData"); 174 175 base.AdjustProblemDataProperties(problemData); 176 TargetVariable = regressionProblemData.TargetVariable; 177 } 144 178 } 145 179 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/TimeSeriesPrognosis/TimeSeriesPrognosisProblemData.cs
r9552 r10540 1621 1621 } 1622 1622 1623 public override void AdjustProblemDataProperties(IDataAnalysisProblemData problemData) { 1624 TimeSeriesPrognosisProblemData timeSeriesProblemData = problemData as TimeSeriesPrognosisProblemData; 1625 if (timeSeriesProblemData == null) 1626 throw new ArgumentException("The problem data is not a timeseries problem data. Instead a " + problemData.GetType().GetPrettyName() + " was provided.", "problemData"); 1627 1628 base.AdjustProblemDataProperties(problemData); 1629 1630 TrainingHorizon = timeSeriesProblemData.TrainingHorizon; 1631 TestHorizon = timeSeriesProblemData.TestHorizon; 1632 } 1633 1623 1634 } 1624 1635 }
Note: See TracChangeset
for help on using the changeset viewer.