- Timestamp:
- 04/20/10 15:49:22 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisSolution.cs
r3431 r3442 26 26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 27 27 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 28 using System.Collections.Generic; 29 using System.Linq; 28 30 29 31 namespace HeuristicLab.Problems.DataAnalysis { … … 33 35 [Item("DataAnalysisSolution", "Represents a solution for a data analysis problem which can be visualized in the GUI.")] 34 36 [StorableClass] 35 public sealedclass DataAnalysisSolution : Item {37 public class DataAnalysisSolution : Item { 36 38 [Storable] 37 private I Predictor predictor;38 public I Predictor Predictor{39 get { return predictor; }39 private IModel model; 40 public IModel Model { 41 get { return model; } 40 42 set { 41 if ( predictor!= value) {42 predictor= value;43 On PredictorChanged();43 if (model != value) { 44 model = value; 45 OnModelChanged(); 44 46 } 45 47 } … … 52 54 set { 53 55 if (problemData != value) { 56 if (value == null) throw new ArgumentNullException(); 54 57 if (problemData != null) DeregisterProblemDataEvents(); 55 58 problemData = value; 56 if (problemData != null)RegisterProblemDataEvents();59 RegisterProblemDataEvents(); 57 60 OnProblemDataChanged(); 58 61 } 59 62 } 60 63 } 61 64 65 private List<double> estimatedValues; 66 public IEnumerable<double> EstimatedValues { 67 get { 68 return estimatedValues; 69 } 70 } 71 72 private List<double> estimatedTrainingValues; 73 public IEnumerable<double> EstimatedTrainingValues { 74 get { 75 return estimatedTrainingValues; 76 } 77 } 78 79 private List<double> estimatedTestValues; 80 public IEnumerable<double> EstimatedTestValues { 81 get { 82 return estimatedTestValues; 83 } 84 } 85 62 86 public DataAnalysisSolution() : base() { } 63 public DataAnalysisSolution(DataAnalysisProblemData problemData, I Predictor predictor)87 public DataAnalysisSolution(DataAnalysisProblemData problemData, IModel model) 64 88 : this() { 65 89 this.problemData = problemData; 66 this. predictor = predictor;90 this.model = model; 67 91 Initialize(); 68 92 } 93 69 94 [StorableConstructor] 70 95 private DataAnalysisSolution(bool deserializing) : base(deserializing) { } … … 75 100 } 76 101 102 private void RecalculateEstimatedValues() { 103 estimatedValues = GetEstimatedValues(0, problemData.Dataset.Rows).ToList(); 104 int nTrainingValues = problemData.TrainingSamplesEnd.Value - problemData.TrainingSamplesStart.Value; 105 estimatedTrainingValues = estimatedValues.Skip(problemData.TrainingSamplesStart.Value).Take(nTrainingValues).ToList(); 106 int nTestValues = problemData.TestSamplesEnd.Value - problemData.TestSamplesStart.Value; 107 estimatedTestValues = estimatedValues.Skip(problemData.TestSamplesStart.Value).Take(nTestValues).ToList(); 108 } 109 110 private IEnumerable<double> GetEstimatedValues(int start, int end) { 111 double[] xs = new double[ProblemData.InputVariables.Count]; 112 for (int row = 0; row < ProblemData.Dataset.Rows; row++) { 113 for (int i = 0; i < xs.Length; i++) { 114 var variableIndex = ProblemData.Dataset.GetVariableIndex(ProblemData.InputVariables[i].Value); 115 xs[i] = ProblemData.Dataset[row, variableIndex]; 116 } 117 yield return model.GetValue(xs); 118 } 119 } 120 77 121 public override IDeepCloneable Clone(Cloner cloner) { 78 122 DataAnalysisSolution clone = new DataAnalysisSolution(); 79 123 cloner.RegisterClonedObject(this, clone); 80 clone. predictor = (IPredictor)cloner.Clone(predictor);124 clone.model = (IModel)cloner.Clone(model); 81 125 clone.problemData = problemData; 82 126 clone.Initialize(); … … 85 129 86 130 #region Events 87 public event EventHandler PredictorChanged; 88 private void OnPredictorChanged() { 89 var changed = PredictorChanged; 131 public event EventHandler ModelChanged; 132 private void OnModelChanged() { 133 RecalculateEstimatedValues(); 134 var changed = ModelChanged; 90 135 if (changed != null) 91 136 changed(this, EventArgs.Empty); … … 93 138 public event EventHandler ProblemDataChanged; 94 139 private void OnProblemDataChanged() { 140 RecalculateEstimatedValues(); 95 141 var changed = ProblemDataChanged; 96 142 if (changed != null) … … 99 145 100 146 private void RegisterProblemDataEvents() { 101 ProblemData. DatasetChanged += new EventHandler(ProblemData_DataSetChanged);147 ProblemData.ProblemDataChanged += new EventHandler(ProblemData_Changed); 102 148 } 103 149 private void DeregisterProblemDataEvents() { 104 ProblemData. DatasetChanged += new EventHandler(ProblemData_DataSetChanged);150 ProblemData.ProblemDataChanged += new EventHandler(ProblemData_Changed); 105 151 } 106 152 107 private void ProblemData_ DataSetChanged(object sender, EventArgs e) {153 private void ProblemData_Changed(object sender, EventArgs e) { 108 154 OnProblemDataChanged(); 109 155 }
Note: See TracChangeset
for help on using the changeset viewer.