- Timestamp:
- 06/01/10 17:58:03 (15 years ago)
- Location:
- trunk/sources
- Files:
-
- 4 added
- 1 deleted
- 20 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.3/SupportVectorMachine.cs ¶
r3877 r3884 168 168 } 169 169 170 protected override void Problem_Reset(object sender, EventArgs e) { 171 TrainingSamplesStartParameter.ActualValue = Problem.DataAnalysisProblemData.TrainingSamplesStart; 172 TrainingSamplesEndParameter.ActualValue = Problem.DataAnalysisProblemData.TrainingSamplesEnd; 173 base.Problem_Reset(sender, e); 174 } 175 170 176 #region Events 171 177 protected override void OnProblemChanged() { … … 175 181 TrainingSamplesStartParameter.ActualValue = Problem.DataAnalysisProblemData.TrainingSamplesStart; 176 182 TrainingSamplesEndParameter.ActualValue = Problem.DataAnalysisProblemData.TrainingSamplesEnd; 183 Problem.Reset += new EventHandler(Problem_Reset); 177 184 base.OnProblemChanged(); 178 185 } … … 210 217 evaluator.DataAnalysisProblemDataParameter.ActualName = Problem.DataAnalysisProblemDataParameter.Name; 211 218 analyzer.ProblemDataParameter.ActualName = Problem.DataAnalysisProblemDataParameter.Name; 219 Problem.Reset += new EventHandler(Problem_Reset); 212 220 } 213 221 } -
TabularUnified trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.LibSVM/1.6.3/LibSVM-1.6.3/Model.cs ¶
r3858 r3884 217 217 model.ClassLabels = null; 218 218 model.NumberOfSVPerClass = null; 219 model.SupportVectorIndizes = new int[0]; 219 220 220 221 bool headerFinished = false; -
TabularUnified trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.LibSVM/1.6.3/LibSVM-1.6.3/ParameterSelection.cs ¶
r2645 r3884 150 150 parameters.C = CValues[i]; 151 151 parameters.Gamma = GammaValues[j]; 152 double test = Training.PerformCrossValidation(problem, parameters, nrfold );152 double test = Training.PerformCrossValidation(problem, parameters, nrfold, true); 153 153 Console.Write("{0} {1} {2}", parameters.C, parameters.Gamma, test); 154 154 if(output != null) -
TabularUnified trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.LibSVM/1.6.3/LibSVM-1.6.3/Solver.cs ¶
r3858 r3884 1555 1555 Parameter newparam = (Parameter)param.Clone(); 1556 1556 newparam.Probability = false; 1557 svm_cross_validation(prob, newparam, nr_fold, ymv );1557 svm_cross_validation(prob, newparam, nr_fold, ymv, true); 1558 1558 for (i = 0; i < prob.Count; i++) 1559 1559 { … … 1872 1872 1873 1873 // Stratified cross validation 1874 public static void svm_cross_validation(Problem prob, Parameter param, int nr_fold, double[] target )1874 public static void svm_cross_validation(Problem prob, Parameter param, int nr_fold, double[] target, bool shuffleTraining) 1875 1875 { 1876 1876 Random rand = new Random(); … … 1936 1936 { 1937 1937 for (i = 0; i < l; i++) perm[i] = i; 1938 for (i = 0; i < l; i++)1939 {1938 if (shuffleTraining) { 1939 for (i = 0; i < l; i++) { 1940 1940 int j = i + (int)(rand.NextDouble() * (l - i)); 1941 1941 do { int _ = perm[i]; perm[i] = perm[j]; perm[j] = _; } while (false); 1942 } 1942 1943 } 1943 1944 for (i = 0; i <= nr_fold; i++) -
TabularUnified trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.LibSVM/1.6.3/LibSVM-1.6.3/Training.cs ¶
r3879 r3884 43 43 } 44 44 45 private static double doCrossValidation(Problem problem, Parameter parameters, int nr_fold )45 private static double doCrossValidation(Problem problem, Parameter parameters, int nr_fold, bool shuffleTraining) 46 46 { 47 47 int i; 48 48 double[] target = new double[problem.Count]; 49 Procedures.svm_cross_validation(problem, parameters, nr_fold, target );49 Procedures.svm_cross_validation(problem, parameters, nr_fold, target, shuffleTraining); 50 50 int total_correct = 0; 51 51 double total_error = 0; … … 87 87 parseCommandLine(args, out parameters, out problem, out crossValidation, out nrfold, out modelFilename); 88 88 if (crossValidation) 89 PerformCrossValidation(problem, parameters, nrfold );89 PerformCrossValidation(problem, parameters, nrfold, true); 90 90 else Model.Write(modelFilename, Train(problem, parameters)); 91 91 } … … 98 98 /// <param name="nrfold">The number of cross validations to use</param> 99 99 /// <returns>The cross validation score</returns> 100 public static double PerformCrossValidation(Problem problem, Parameter parameters, int nrfold )100 public static double PerformCrossValidation(Problem problem, Parameter parameters, int nrfold, bool shuffleTraining) 101 101 { 102 102 string error = Procedures.svm_check_parameter(problem, parameters); 103 103 if (error == null) 104 return doCrossValidation(problem, parameters, nrfold );104 return doCrossValidation(problem, parameters, nrfold, shuffleTraining); 105 105 else throw new Exception(error); 106 106 } -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/SupportVectorRegression/BestSupportVectorRegressionSolutionAnalyzer.cs ¶
r3877 r3884 169 169 return base.Apply(); 170 170 } 171 172 private IEnumerable<string> GetInputVariables(SymbolicExpressionTree tree) {173 return (from varNode in tree.IterateNodesPrefix().OfType<VariableTreeNode>()174 select varNode.VariableName).Distinct();175 }176 171 } 177 172 } -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/SupportVectorRegression/SupportVectorRegressionSolution.cs ¶
r3858 r3884 39 39 [StorableClass] 40 40 public sealed class SupportVectorRegressionSolution : DataAnalysisSolution { 41 public SupportVectorRegressionSolution() : base() { } 42 public SupportVectorRegressionSolution(DataAnalysisProblemData problemData, SupportVectorMachineModel model, IEnumerable<string> inputVariables, double lowerEstimationLimit, double upperEstimationLimit) 43 : base(problemData, lowerEstimationLimit, upperEstimationLimit) { 44 this.Model = model; 45 } 46 41 47 public override Image ItemImage { 42 48 get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Function; } 43 49 } 44 50 45 [Storable] 46 private SupportVectorMachineModel model; 47 public SupportVectorMachineModel Model { 48 get { return model; } 51 public new SupportVectorMachineModel Model { 52 get { return (SupportVectorMachineModel)base.Model; } 53 set { base.Model = value; } 49 54 } 50 55 … … 53 58 } 54 59 55 public SupportVectorRegressionSolution() : base() { } 56 public SupportVectorRegressionSolution(DataAnalysisProblemData problemData, SupportVectorMachineModel model, IEnumerable<string> inputVariables, double lowerEstimationLimit, double upperEstimationLimit) 57 : base(problemData, lowerEstimationLimit, upperEstimationLimit) { 58 this.model = model; 59 } 60 61 protected override void OnProblemDataChanged(EventArgs e) { 62 RecalculateEstimatedValues(); 63 model.Model.SupportVectorIndizes = new int[0]; 60 protected override void OnProblemDataChanged() { 61 Model.Model.SupportVectorIndizes = new int[0]; 62 base.OnProblemDataChanged(); 64 63 } 65 64 66 65 private Dataset CalculateSupportVectors() { 67 if ( model.Model.SupportVectorIndizes.Length == 0)66 if (Model.Model.SupportVectorIndizes.Length == 0) 68 67 return new Dataset(); 69 68 70 Dataset dataset = new Dataset(ProblemData.Dataset.VariableNames, new double[ model.Model.SupportVectorCount, ProblemData.Dataset.Columns]);71 for (int i = 0; i < model.Model.SupportVectorIndizes.Length; i++) {69 Dataset dataset = new Dataset(ProblemData.Dataset.VariableNames, new double[Model.Model.SupportVectorCount, ProblemData.Dataset.Columns]); 70 for (int i = 0; i < Model.Model.SupportVectorIndizes.Length; i++) { 72 71 for (int column = 0; column < ProblemData.Dataset.Columns; column++) 73 dataset[i, column] = ProblemData.Dataset[ model.Model.SupportVectorIndizes[i], column];72 dataset[i, column] = ProblemData.Dataset[Model.Model.SupportVectorIndizes[i], column]; 74 73 } 75 74 return dataset; 76 75 } 77 76 78 pr ivate void RecalculateEstimatedValues() {77 protected override void RecalculateEstimatedValues() { 79 78 SVM.Problem problem = SupportVectorMachineUtil.CreateSvmProblem(ProblemData, 0, ProblemData.Dataset.Rows); 80 SVM.Problem scaledProblem = Scaling.Scale( model.RangeTransform, problem);79 SVM.Problem scaledProblem = Scaling.Scale(Model.RangeTransform, problem); 81 80 82 81 estimatedValues = (from row in Enumerable.Range(0, scaledProblem.Count) 83 let prediction = SVM.Prediction.Predict( model.Model, scaledProblem.X[row])82 let prediction = SVM.Prediction.Predict(Model.Model, scaledProblem.X[row]) 84 83 let boundedX = Math.Min(UpperEstimationLimit, Math.Max(LowerEstimationLimit, prediction)) 85 84 select double.IsNaN(boundedX) ? UpperEstimationLimit : boundedX).ToList(); 86 OnEstimatedValuesChanged( EventArgs.Empty);85 OnEstimatedValuesChanged(); 87 86 } 88 87 … … 112 111 } 113 112 } 114 115 public override IDeepCloneable Clone(Cloner cloner) {116 SupportVectorRegressionSolution clone = (SupportVectorRegressionSolution)base.Clone(cloner);117 clone.model = (SupportVectorMachineModel)cloner.Clone(model);118 return clone;119 }120 113 } 121 114 } -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionModel.cs ¶
r3541 r3884 39 39 [StorableClass] 40 40 [Item("SymbolicRegressionModel", "A symbolic regression model represents an entity that provides estimated values based on input values.")] 41 public class SymbolicRegressionModel : Item { 41 public class SymbolicRegressionModel : NamedItem, IDataAnalysisModel { 42 private SymbolicRegressionModel() : base() { } // for cloning 43 [StorableConstructor] 44 protected SymbolicRegressionModel(bool deserializing) 45 : base(deserializing) { 46 } 47 public SymbolicRegressionModel(ISymbolicExpressionTreeInterpreter interpreter, SymbolicExpressionTree tree, IEnumerable<string> inputVariables) 48 : base() { 49 this.tree = tree; 50 this.interpreter = interpreter; 51 this.inputVariables = inputVariables.ToList(); 52 } 53 42 54 [Storable] 43 55 private SymbolicExpressionTree tree; … … 50 62 get { return interpreter; } 51 63 } 64 [Storable] 52 65 private List<string> inputVariables; 53 [Storable]54 66 public IEnumerable<string> InputVariables { 55 67 get { return inputVariables.AsEnumerable(); } … … 59 71 } 60 72 } 61 public SymbolicRegressionModel() : base() { } // for cloning62 73 63 public SymbolicRegressionModel(ISymbolicExpressionTreeInterpreter interpreter, SymbolicExpressionTree tree, IEnumerable<string> inputVariables) 64 : base() { 65 this.tree = tree; 66 this.interpreter = interpreter; 67 this.inputVariables = inputVariables.ToList(); 68 } 69 70 public IEnumerable<double> GetEstimatedValues(Dataset dataset, int start, int end) { 71 return interpreter.GetSymbolicExpressionTreeValues(tree, dataset, Enumerable.Range(start, end - start)); 74 public IEnumerable<double> GetEstimatedValues(DataAnalysisProblemData problemData, int start, int end) { 75 return interpreter.GetSymbolicExpressionTreeValues(tree, problemData.Dataset, Enumerable.Range(start, end - start)); 72 76 } 73 77 -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionSolution.cs ¶
r3710 r3884 37 37 [StorableClass] 38 38 public sealed class SymbolicRegressionSolution : DataAnalysisSolution { 39 public SymbolicRegressionSolution() : base() { } 40 public SymbolicRegressionSolution(DataAnalysisProblemData problemData, SymbolicRegressionModel model, double lowerEstimationLimit, double upperEstimationLimit) 41 : base(problemData, lowerEstimationLimit, upperEstimationLimit) { 42 this.Model = model; 43 } 44 39 45 public override Image ItemImage { 40 46 get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Function; } 41 47 } 42 [Storable] 43 private SymbolicRegressionModel model; 44 public SymbolicRegressionModel Model { 45 get { return model; } 46 set { 47 if (model != value) { 48 if (value == null) throw new ArgumentNullException(); 49 model = value; 50 OnModelChanged(EventArgs.Empty); 51 } 52 } 48 49 public new SymbolicRegressionModel Model { 50 get { return (SymbolicRegressionModel)base.Model; } 51 set { base.Model = value; } 53 52 } 54 53 55 public SymbolicRegressionSolution() : base() { } 56 public SymbolicRegressionSolution(DataAnalysisProblemData problemData, SymbolicRegressionModel model, double lowerEstimationLimit, double upperEstimationLimit) 57 : base(problemData, lowerEstimationLimit, upperEstimationLimit) { 58 this.model = model; 59 } 60 61 public event EventHandler ModelChanged; 62 private void OnModelChanged(EventArgs e) { 63 RecalculateEstimatedValues(); 64 var listeners = ModelChanged; 65 if (listeners != null) 66 listeners(this, e); 67 } 68 69 protected override void OnProblemDataChanged(EventArgs e) { 70 RecalculateEstimatedValues(); 71 } 72 73 private void RecalculateEstimatedValues() { 74 estimatedValues = (from x in model.GetEstimatedValues(ProblemData.Dataset, 0, ProblemData.Dataset.Rows) 54 protected override void RecalculateEstimatedValues() { 55 estimatedValues = (from x in Model.GetEstimatedValues(ProblemData, 0, ProblemData.Dataset.Rows) 75 56 let boundedX = Math.Min(UpperEstimationLimit, Math.Max(LowerEstimationLimit, x)) 76 57 select double.IsNaN(boundedX) ? UpperEstimationLimit : boundedX).ToList(); 77 OnEstimatedValuesChanged( EventArgs.Empty);58 OnEstimatedValuesChanged(); 78 59 } 79 60 … … 103 84 } 104 85 } 105 106 public override IDeepCloneable Clone(Cloner cloner) {107 SymbolicRegressionSolution clone = (SymbolicRegressionSolution)base.Clone(cloner);108 clone.model = (SymbolicRegressionModel)cloner.Clone(model);109 return clone;110 }111 86 } 112 87 } -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/DataAnalysisProblemDataView.cs ¶
r3758 r3884 39 39 public new DataAnalysisProblemData Content { 40 40 get { return (DataAnalysisProblemData)base.Content; } 41 set { 42 base.Content = value; 43 } 41 set { base.Content = value; } 44 42 } 45 43 -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/HeuristicLab.Problems.DataAnalysis.Views-3.3.csproj ¶
r3853 r3884 86 86 <None Include="HeuristicLabProblemsDataAnalysisViewsPlugin.cs.frame" /> 87 87 <None Include="Properties\AssemblyInfo.frame" /> 88 <Compile Include="DataAnalysisSolutionView.cs"> 89 <SubType>UserControl</SubType> 90 </Compile> 91 <Compile Include="DataAnalysisSolutionView.Designer.cs"> 92 <DependentUpon>DataAnalysisSolutionView.cs</DependentUpon> 93 </Compile> 88 94 <Compile Include="SupportVectorRegressionSolutionView.cs"> 89 95 <SubType>UserControl</SubType> -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/SupportVectorRegressionSolutionView.Designer.cs ¶
r3858 r3884 44 44 /// </summary> 45 45 private void InitializeComponent() { 46 this.modelTabControl = new System.Windows.Forms.TabControl();47 this.modelTabPage = new System.Windows.Forms.TabPage();48 this.modelPanel = new HeuristicLab.MainForm.WindowsForms.ViewHost();49 this.dataTabPage = new System.Windows.Forms.TabPage();50 this.dataPanel = new HeuristicLab.MainForm.WindowsForms.ViewHost();51 46 this.supportVectorTabControl = new System.Windows.Forms.TabPage(); 52 47 this.supportVectorViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost(); 53 this.modelTabControl.SuspendLayout();54 this.modelTabPage.SuspendLayout();55 this.dataTabPage.SuspendLayout();56 48 this.supportVectorTabControl.SuspendLayout(); 57 49 this.SuspendLayout(); 58 //59 // modelTabControl60 //61 this.modelTabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)62 | System.Windows.Forms.AnchorStyles.Left)63 | System.Windows.Forms.AnchorStyles.Right)));64 this.modelTabControl.Controls.Add(this.modelTabPage);65 this.modelTabControl.Controls.Add(this.dataTabPage);66 this.modelTabControl.Controls.Add(this.supportVectorTabControl);67 this.modelTabControl.Location = new System.Drawing.Point(3, 3);68 this.modelTabControl.Name = "modelTabControl";69 this.modelTabControl.SelectedIndex = 0;70 this.modelTabControl.Size = new System.Drawing.Size(247, 245);71 this.modelTabControl.TabIndex = 0;72 //73 // modelTabPage74 //75 this.modelTabPage.Controls.Add(this.modelPanel);76 this.modelTabPage.Location = new System.Drawing.Point(4, 22);77 this.modelTabPage.Name = "modelTabPage";78 this.modelTabPage.Padding = new System.Windows.Forms.Padding(3);79 this.modelTabPage.Size = new System.Drawing.Size(239, 219);80 this.modelTabPage.TabIndex = 0;81 this.modelTabPage.Text = "Model";82 this.modelTabPage.UseVisualStyleBackColor = true;83 //84 // modelPanel85 //86 this.modelPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)87 | System.Windows.Forms.AnchorStyles.Left)88 | System.Windows.Forms.AnchorStyles.Right)));89 this.modelPanel.Caption = "View";90 this.modelPanel.Content = null;91 this.modelPanel.Location = new System.Drawing.Point(6, 6);92 this.modelPanel.Name = "modelPanel";93 this.modelPanel.ReadOnly = false;94 this.modelPanel.Size = new System.Drawing.Size(227, 207);95 this.modelPanel.TabIndex = 0;96 this.modelPanel.ViewType = null;97 //98 // dataTabPage99 //100 this.dataTabPage.Controls.Add(this.dataPanel);101 this.dataTabPage.Location = new System.Drawing.Point(4, 22);102 this.dataTabPage.Name = "dataTabPage";103 this.dataTabPage.Padding = new System.Windows.Forms.Padding(3);104 this.dataTabPage.Size = new System.Drawing.Size(239, 219);105 this.dataTabPage.TabIndex = 1;106 this.dataTabPage.Text = "Data";107 this.dataTabPage.UseVisualStyleBackColor = true;108 //109 // dataPanel110 //111 this.dataPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)112 | System.Windows.Forms.AnchorStyles.Left)113 | System.Windows.Forms.AnchorStyles.Right)));114 this.dataPanel.Caption = "View";115 this.dataPanel.Content = null;116 this.dataPanel.Location = new System.Drawing.Point(6, 6);117 this.dataPanel.Name = "dataPanel";118 this.dataPanel.ReadOnly = false;119 this.dataPanel.Size = new System.Drawing.Size(227, 207);120 this.dataPanel.TabIndex = 0;121 this.dataPanel.ViewType = null;122 50 // 123 51 // supportVectorTabControl … … 151 79 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 152 80 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 153 this.Controls.Add(this.modelTabControl);154 81 this.Name = "SupportVectorRegressionSolutionView"; 155 this.Size = new System.Drawing.Size(253, 251); 156 this.modelTabControl.ResumeLayout(false); 157 this.modelTabPage.ResumeLayout(false); 158 this.dataTabPage.ResumeLayout(false); 82 this.tabControl.TabPages.Add(supportVectorTabControl); 159 83 this.supportVectorTabControl.ResumeLayout(false); 160 84 this.ResumeLayout(false); … … 164 88 #endregion 165 89 166 private System.Windows.Forms.TabControl modelTabControl;167 private System.Windows.Forms.TabPage modelTabPage;168 private HeuristicLab.MainForm.WindowsForms.ViewHost modelPanel;169 private System.Windows.Forms.TabPage dataTabPage;170 private HeuristicLab.MainForm.WindowsForms.ViewHost dataPanel;171 90 private System.Windows.Forms.TabPage supportVectorTabControl; 172 91 private HeuristicLab.MainForm.WindowsForms.ViewHost supportVectorViewHost; 173 174 175 92 } 176 93 } -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/SupportVectorRegressionSolutionView.cs ¶
r3858 r3884 40 40 [View("Support Vector Regression Solution View")] 41 41 [Content(typeof(SupportVectorRegressionSolution))] 42 public partial class SupportVectorRegressionSolutionView : AsynchronousContentView {42 public partial class SupportVectorRegressionSolutionView : DataAnalysisSolutionView { 43 43 44 44 public new SupportVectorRegressionSolution Content { 45 45 get { return (SupportVectorRegressionSolution)base.Content; } 46 set { 47 base.Content = value; 48 } 46 set { base.Content = value; } 49 47 } 50 48 … … 57 55 base.OnContentChanged(); 58 56 if (Content != null) { 59 dataPanel.Content = Content.ProblemData;60 modelPanel.Content = Content.Model;61 57 supportVectorViewHost.Content = Content.SupportVectors; 62 58 } else { 63 dataPanel.Content = null;64 modelPanel.Content = null;65 59 supportVectorViewHost.Content = null; 66 60 } 67 61 } 68 protected override void RegisterContentEvents() {69 base.RegisterContentEvents();70 Content.ProblemDataChanged += new EventHandler(Content_ProblemDataChanged);71 }72 73 protected override void DeregisterContentEvents() {74 base.DeregisterContentEvents();75 }76 77 private void Content_ProblemDataChanged(object sender, EventArgs e) {78 dataPanel.Content = Content.ProblemData;79 }80 62 } 81 63 } -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/SimplifiedSymbolicExpressionModelView.cs ¶
r3797 r3884 39 39 namespace HeuristicLab.Problems.DataAnalysis.Views.Symbolic { 40 40 [View("Simplified Symbolic Expression Model View")] 41 [Content(typeof(SymbolicRegression Solution))]41 [Content(typeof(SymbolicRegressionModel))] 42 42 public partial class SimplifiedSymbolicExpressionModelView : AsynchronousContentView { 43 public new SymbolicRegressionSolution Content {44 get { return (SymbolicRegressionSolution)base.Content; }45 set { base.Content = value; }46 }47 48 49 43 public SimplifiedSymbolicExpressionModelView() 50 44 : base() { … … 52 46 } 53 47 54 protected override void RegisterContentEvents() { 55 base.RegisterContentEvents(); 56 Content.ModelChanged += new EventHandler(Content_ModelChanged); 57 } 58 59 protected override void DeregisterContentEvents() { 60 base.DeregisterContentEvents(); 61 Content.ModelChanged -= new EventHandler(Content_ModelChanged); 62 } 63 64 void Content_ModelChanged(object sender, EventArgs e) { 65 UpdateTreeChart(); 48 public new SymbolicRegressionModel Content { 49 get { return (SymbolicRegressionModel)base.Content; } 50 set { base.Content = value; } 66 51 } 67 52 68 53 protected override void OnContentChanged() { 69 54 base.OnContentChanged(); 70 UpdateTreeChart(); 55 if (Content != null) 56 UpdateTreeChart(); 57 else 58 viewHost.Content = null; 71 59 } 72 60 73 61 private void UpdateTreeChart() { 74 62 var simplifier = new SymbolicSimplifier(); 75 var simplifiedTree = simplifier.Simplify(Content. Model.SymbolicExpressionTree);63 var simplifiedTree = simplifier.Simplify(Content.SymbolicExpressionTree); 76 64 viewHost.Content = simplifiedTree; 77 65 } -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/SymbolicExpressionModelView.cs ¶
r3797 r3884 39 39 namespace HeuristicLab.Problems.DataAnalysis.Views.Symbolic { 40 40 [View("Symbolic Expression Model View")] 41 [Content(typeof(SymbolicRegression Solution))]41 [Content(typeof(SymbolicRegressionModel),true)] 42 42 public partial class SymbolicExpressionModelView : AsynchronousContentView { 43 public new SymbolicRegressionSolution Content {44 get { return (SymbolicRegressionSolution)base.Content; }45 set { base.Content = value; }46 }47 48 43 public SymbolicExpressionModelView() 49 44 : base() { … … 51 46 } 52 47 53 protected override void RegisterContentEvents() { 54 base.RegisterContentEvents(); 55 Content.ModelChanged += new EventHandler(Content_ModelChanged); 56 } 57 58 protected override void DeregisterContentEvents() { 59 base.DeregisterContentEvents(); 60 Content.ModelChanged -= new EventHandler(Content_ModelChanged); 61 } 62 63 void Content_ModelChanged(object sender, EventArgs e) { 64 UpdateTreeChart(); 48 public new SymbolicRegressionModel Content { 49 get { return (SymbolicRegressionModel)base.Content; } 50 set { base.Content = value; } 65 51 } 66 52 67 53 protected override void OnContentChanged() { 68 54 base.OnContentChanged(); 69 UpdateTreeChart(); 55 if (Content != null) 56 UpdateTreeChart(); 57 else 58 viewHost.Content = null; 70 59 } 71 60 72 61 private void UpdateTreeChart() { 73 viewHost.Content = Content. Model.SymbolicExpressionTree;62 viewHost.Content = Content.SymbolicExpressionTree; 74 63 } 75 64 } -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblem.cs ¶
r3877 r3884 71 71 72 72 #region events 73 protected virtual void OnDataAnalysisProblemChanged(EventArgs e) { } 73 protected virtual void OnDataAnalysisProblemChanged(EventArgs e) { 74 RaiseReset(e); 75 } 74 76 75 77 private void RegisterParameterEvents() { -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisSolution.cs ¶
r3710 r3884 36 36 [StorableClass] 37 37 public abstract class DataAnalysisSolution : NamedItem { 38 protected DataAnalysisSolution() 39 : base() { } 40 protected DataAnalysisSolution(DataAnalysisProblemData problemData) : this(problemData, double.NegativeInfinity, double.PositiveInfinity) { } 41 protected DataAnalysisSolution(DataAnalysisProblemData problemData, double lowerEstimationLimit, double upperEstimationLimit) 42 : this() { 43 this.problemData = problemData; 44 this.lowerEstimationLimit = lowerEstimationLimit; 45 this.upperEstimationLimit = upperEstimationLimit; 46 Initialize(); 47 } 48 49 [StorableConstructor] 50 private DataAnalysisSolution(bool deserializing) : base(deserializing) { } 51 [StorableHook(HookType.AfterDeserialization)] 52 private void Initialize() { 53 if (problemData != null) RegisterProblemDataEvents(); 54 } 55 38 56 [Storable] 39 57 private DataAnalysisProblemData problemData; … … 43 61 if (problemData != value) { 44 62 if (value == null) throw new ArgumentNullException(); 63 if (model != null && problemData != null && !problemData.InputVariables.Select(c => c.Value).SequenceEqual( 64 value.InputVariables.Select(c => c.Value))) 65 throw new ArgumentException("Could not set new problem data with different structure"); 66 45 67 if (problemData != null) DeregisterProblemDataEvents(); 46 68 problemData = value; 47 69 RegisterProblemDataEvents(); 48 OnProblemDataChanged( EventArgs.Empty);70 OnProblemDataChanged(); 49 71 } 50 72 } 51 73 } 74 75 [Storable] 76 private IDataAnalysisModel model; 77 public IDataAnalysisModel Model { 78 get { return model; } 79 set { 80 if (model != value) { 81 if (value == null) throw new ArgumentNullException(); 82 model = value; 83 OnModelChanged(); 84 } 85 } 86 } 87 52 88 [Storable] 53 89 private double lowerEstimationLimit; … … 57 93 if (lowerEstimationLimit != value) { 58 94 lowerEstimationLimit = value; 59 OnEstimatedValuesChanged(EventArgs.Empty);95 RecalculateEstimatedValues(); 60 96 } 61 97 } … … 69 105 if (upperEstimationLimit != value) { 70 106 upperEstimationLimit = value; 71 OnEstimatedValuesChanged(EventArgs.Empty);107 RecalculateEstimatedValues(); 72 108 } 73 109 } … … 77 113 public abstract IEnumerable<double> EstimatedTrainingValues { get; } 78 114 public abstract IEnumerable<double> EstimatedTestValues { get; } 79 80 protected DataAnalysisSolution() : base() { 81 Name = ItemName; 82 Description = ItemDescription; 83 } 84 protected DataAnalysisSolution(DataAnalysisProblemData problemData) : this(problemData, double.NegativeInfinity, double.PositiveInfinity) { } 85 protected DataAnalysisSolution(DataAnalysisProblemData problemData, double lowerEstimationLimit, double upperEstimationLimit) 86 : this() { 87 this.problemData = problemData; 88 this.lowerEstimationLimit = lowerEstimationLimit; 89 this.upperEstimationLimit = upperEstimationLimit; 90 Initialize(); 91 } 92 93 [StorableConstructor] 94 private DataAnalysisSolution(bool deserializing) : base(deserializing) { } 95 96 [StorableHook(HookType.AfterDeserialization)] 97 private void Initialize() { 98 if (problemData != null) RegisterProblemDataEvents(); 99 } 100 101 public override IDeepCloneable Clone(Cloner cloner) { 102 DataAnalysisSolution clone = (DataAnalysisSolution)base.Clone(cloner); 103 // don't clone the problem data! 104 clone.problemData = problemData; 105 clone.lowerEstimationLimit = lowerEstimationLimit; 106 clone.upperEstimationLimit = upperEstimationLimit; 107 clone.Initialize(); 108 return clone; 109 } 115 protected abstract void RecalculateEstimatedValues(); 110 116 111 117 #region Events … … 116 122 ProblemData.ProblemDataChanged += new EventHandler(ProblemData_Changed); 117 123 } 118 119 124 private void ProblemData_Changed(object sender, EventArgs e) { 120 OnProblemDataChanged( EventArgs.Empty);125 OnProblemDataChanged(); 121 126 } 122 127 123 128 public event EventHandler ProblemDataChanged; 124 protected virtual void OnProblemDataChanged(EventArgs e) { 129 protected virtual void OnProblemDataChanged() { 130 RecalculateEstimatedValues(); 125 131 var listeners = ProblemDataChanged; 126 132 if (listeners != null) 127 listeners(this, e); 133 listeners(this, EventArgs.Empty); 134 } 135 136 public event EventHandler ModelChanged; 137 protected virtual void OnModelChanged() { 138 RecalculateEstimatedValues(); 139 EventHandler handler = ModelChanged; 140 if (handler != null) 141 handler(this, EventArgs.Empty); 128 142 } 129 143 130 144 public event EventHandler EstimatedValuesChanged; 131 protected virtual void OnEstimatedValuesChanged( EventArgs e) {145 protected virtual void OnEstimatedValuesChanged() { 132 146 var listeners = EstimatedValuesChanged; 133 147 if (listeners != null) 134 listeners(this, e);148 listeners(this, EventArgs.Empty); 135 149 } 136 150 #endregion 151 152 public override IDeepCloneable Clone(Cloner cloner) { 153 DataAnalysisSolution clone = (DataAnalysisSolution)base.Clone(cloner); 154 // don't clone the problem data! 155 clone.problemData = problemData; 156 clone.Model = (IDataAnalysisModel)cloner.Clone(model); 157 clone.lowerEstimationLimit = lowerEstimationLimit; 158 clone.upperEstimationLimit = upperEstimationLimit; 159 clone.Initialize(); 160 return clone; 161 } 137 162 } 138 163 } -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/HeuristicLab.Problems.DataAnalysis-3.3.csproj ¶
r3877 r3884 98 98 <Compile Include="Evaluators\SimpleVarianceAccountedForEvaluator.cs" /> 99 99 <Compile Include="HeuristicLabProblemsDataAnalysisPlugin.cs" /> 100 <Compile Include="Interfaces\IDataAnalysisModel.cs" /> 100 101 <Compile Include="Interfaces\IDataAnalysisProblem.cs" /> 101 102 <Compile Include="MatrixExtensions.cs" /> 102 103 <Compile Include="Properties\AssemblyInfo.cs" /> 104 <Compile Include="SupportVectorMachine\ParameterAdjustmentProblem\SupportVectorRegressionParameterAdjustmentBestSolutionAnalyzer.cs" /> 103 105 <Compile Include="SupportVectorMachine\ParameterAdjustmentProblem\SupportVectorRegressionParameterAdjustmentEvaluator.cs" /> 104 106 <Compile Include="SupportVectorMachine\ParameterAdjustmentProblem\SupportVectorRegressionParameterAdjustmentProblem.cs" /> -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/ParameterAdjustmentProblem/SupportVectorMachineParameterAdjustmentEvaluator.cs ¶
r3883 r3884 34 34 35 35 namespace HeuristicLab.Problems.DataAnalysis.SupportVectorMachine.ParameterAdjustmentProblem { 36 [Item("SupportVector RegressionParameterAdjustmentEvaluator", "")]36 [Item("SupportVectorMachineParameterAdjustmentEvaluator", "")] 37 37 [StorableClass] 38 public class SupportVector RegressionParameterAdjustmentEvaluator : AlgorithmOperator, ISingleObjectiveEvaluator {38 public class SupportVectorMachineParameterAdjustmentEvaluator : AlgorithmOperator, ISingleObjectiveEvaluator { 39 39 private const string ParameterVectorParameterName = "ParameterVector"; 40 40 private const string DataAnalysisProblemDataParameterName = "DataAnalysisProblemData"; … … 112 112 #endregion 113 113 114 public SupportVector RegressionParameterAdjustmentEvaluator()114 public SupportVectorMachineParameterAdjustmentEvaluator() 115 115 : base() { 116 116 StringValue nuSvrType = new StringValue("NU_SVR").AsReadOnly(); … … 141 141 GammaParameter.Value = new DoubleValue(Math.Pow(2, point[2])); 142 142 EpsilonParameter.Value = new DoubleValue(); 143 144 143 return base.Apply(); 145 144 } -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/ParameterAdjustmentProblem/SupportVectorMachineParameterAdjustmentProblem.cs ¶
r3883 r3884 36 36 37 37 namespace HeuristicLab.Problems.DataAnalysis.SupportVectorMachine.ParameterAdjustmentProblem { 38 [Item("Support Vector RegressionParameter Adjustment Problem", "Represents the problem of finding good parameter settings for support vector machines.")]38 [Item("Support Vector Machine Parameter Adjustment Problem", "Represents the problem of finding good parameter settings for support vector machines.")] 39 39 [StorableClass] 40 40 [Creatable("Problems")] 41 public sealed class SupportVector RegressionParameterAdjustmentProblem : DataAnalysisProblem, ISingleObjectiveProblem {41 public sealed class SupportVectorMachineParameterAdjustmentProblem : DataAnalysisProblem, ISingleObjectiveProblem { 42 42 43 43 #region Parameter Properties … … 60 60 get { return SolutionCreatorParameter; } 61 61 } 62 public new ValueParameter<SupportVector RegressionParameterAdjustmentEvaluator> EvaluatorParameter {63 get { return (ValueParameter<SupportVector RegressionParameterAdjustmentEvaluator>)Parameters["Evaluator"]; }62 public new ValueParameter<SupportVectorMachineParameterAdjustmentEvaluator> EvaluatorParameter { 63 get { return (ValueParameter<SupportVectorMachineParameterAdjustmentEvaluator>)Parameters["Evaluator"]; } 64 64 } 65 65 IParameter IProblem.EvaluatorParameter { … … 96 96 get { return SolutionCreatorParameter.Value; } 97 97 } 98 public new SupportVector RegressionParameterAdjustmentEvaluator Evaluator {98 public new SupportVectorMachineParameterAdjustmentEvaluator Evaluator { 99 99 get { return EvaluatorParameter.Value; } 100 100 set { EvaluatorParameter.Value = value; } … … 115 115 } 116 116 #endregion 117 118 119 //public int MinimumProblemSize {120 // get { return 3; }121 //}122 //public int MaximumProblemSize {123 // get { return 3; }124 //}125 117 126 118 public IntValue TrainingSamplesStart { … … 139 131 140 132 [StorableConstructor] 141 private SupportVector RegressionParameterAdjustmentProblem(bool deserializing) : base() { }142 public SupportVector RegressionParameterAdjustmentProblem()133 private SupportVectorMachineParameterAdjustmentProblem(bool deserializing) : base() { } 134 public SupportVectorMachineParameterAdjustmentProblem() 143 135 : base() { 144 136 UniformRandomRealVectorCreator creator = new UniformRandomRealVectorCreator(); 145 SupportVector RegressionParameterAdjustmentEvaluator evaluator = new SupportVectorRegressionParameterAdjustmentEvaluator();137 SupportVectorMachineParameterAdjustmentEvaluator evaluator = new SupportVectorMachineParameterAdjustmentEvaluator(); 146 138 147 139 var bounds = new DoubleMatrix(new double[,] { … … 155 147 Parameters.Add(new ValueParameter<IntValue>("ProblemSize", "The dimension of the problem.", new IntValue(3))); 156 148 Parameters.Add(new ValueParameter<IRealVectorCreator>("SolutionCreator", "The operator which should be used to create new test function solutions.", creator)); 157 Parameters.Add(new ValueParameter<SupportVector RegressionParameterAdjustmentEvaluator>("Evaluator", "The operator which should be used to evaluate test function solutions.", evaluator));149 Parameters.Add(new ValueParameter<SupportVectorMachineParameterAdjustmentEvaluator>("Evaluator", "The operator which should be used to evaluate test function solutions.", evaluator)); 158 150 Parameters.Add(new OptionalValueParameter<DoubleValue>("BestKnownQuality", "The quality of the best known solution of this test function.", new DoubleValue(0))); 159 151 Parameters.Add(new OptionalValueParameter<RealVector>("BestKnownSolution", "The best known solution for this test function instance.")); … … 169 161 ParameterizeSolutionCreator(); 170 162 ParameterizeEvaluator(); 163 ParameterizeAnalyzers(); 171 164 172 165 Initialize(); … … 175 168 176 169 public override IDeepCloneable Clone(Cloner cloner) { 177 SupportVector RegressionParameterAdjustmentProblem clone = (SupportVectorRegressionParameterAdjustmentProblem)base.Clone(cloner);170 SupportVectorMachineParameterAdjustmentProblem clone = (SupportVectorMachineParameterAdjustmentProblem)base.Clone(cloner); 178 171 clone.strategyVectorCreator = (StdDevStrategyVectorCreator)cloner.Clone(strategyVectorCreator); 179 172 clone.strategyVectorCrossover = (StdDevStrategyVectorCrossover)cloner.Clone(strategyVectorCrossover); … … 191 184 private void SolutionCreatorParameter_ValueChanged(object sender, EventArgs e) { 192 185 ParameterizeSolutionCreator(); 193 //ParameterizeAnalyzers();186 ParameterizeAnalyzers(); 194 187 SolutionCreator_RealVectorParameter_ActualNameChanged(null, EventArgs.Empty); 195 188 } … … 197 190 ParameterizeEvaluator(); 198 191 ParameterizeOperators(); 199 //ParameterizeAnalyzers();192 ParameterizeAnalyzers(); 200 193 } 201 194 private void EvaluatorParameter_ValueChanged(object sender, EventArgs e) { 202 195 ParameterizeEvaluator(); 203 //ParameterizeAnalyzers();196 ParameterizeAnalyzers(); 204 197 RaiseReset(EventArgs.Empty); 205 198 } … … 224 217 operators = new List<IOperator>(); 225 218 operators.AddRange(ApplicationManager.Manager.GetInstances<IRealVectorOperator>().Cast<IOperator>()); 219 operators.Add(new SupportVectorMachineParameterAdjustmentBestSolutionAnalyzer()); 226 220 operators.Add(strategyVectorCreator); 227 221 operators.Add(strategyVectorCrossover); … … 254 248 op.BoundsParameter.ActualName = BoundsParameter.Name; 255 249 } 256 foreach (SupportVector RegressionParameterAdjustmentEvaluator op in Operators.OfType<SupportVectorRegressionParameterAdjustmentEvaluator>()) {250 foreach (SupportVectorMachineParameterAdjustmentEvaluator op in Operators.OfType<SupportVectorMachineParameterAdjustmentEvaluator>()) { 257 251 op.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName; 258 252 op.ParameterVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName; -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineCrossValidationEvaluator.cs ¶
r3877 r3884 41 41 [Item("SupportVectorMachineCrossValidationEvaluator", "Represents an operator that performs SVM cross validation with the given parameters.")] 42 42 public class SupportVectorMachineCrossValidationEvaluator : SingleSuccessorOperator, ISingleObjectiveEvaluator { 43 private const string RandomParameterName = "Random"; 43 44 private const string DataAnalysisProblemDataParameterName = "DataAnalysisProblemData"; 44 45 private const string SvmTypeParameterName = "SvmType"; … … 50 51 private const string SamplesStartParameterName = "SamplesStart"; 51 52 private const string SamplesEndParameterName = "SamplesEnd"; 53 private const string ActualSamplesParameterName = "ActualSamples"; 52 54 private const string NumberOfFoldsParameterName = "NumberOfFolds"; 53 55 private const string QualityParameterName = "Quality"; 54 56 55 57 #region parameter properties 58 public ILookupParameter<IRandom> RandomParameter { 59 get { return (ILookupParameter<IRandom>)Parameters[RandomParameterName]; } 60 } 56 61 public IValueLookupParameter<DataAnalysisProblemData> DataAnalysisProblemDataParameter { 57 62 get { return (IValueLookupParameter<DataAnalysisProblemData>)Parameters[DataAnalysisProblemDataParameterName]; } … … 80 85 public IValueLookupParameter<IntValue> SamplesEndParameter { 81 86 get { return (IValueLookupParameter<IntValue>)Parameters[SamplesEndParameterName]; } 87 } 88 public IValueLookupParameter<PercentValue> ActualSamplesParameter { 89 get { return (IValueLookupParameter<PercentValue>)Parameters[ActualSamplesParameterName]; } 82 90 } 83 91 public IValueLookupParameter<IntValue> NumberOfFoldsParameter { … … 123 131 public SupportVectorMachineCrossValidationEvaluator() 124 132 : base() { 133 Parameters.Add(new LookupParameter<IRandom>(RandomParameterName, "The random generator to use.")); 125 134 Parameters.Add(new ValueLookupParameter<DataAnalysisProblemData>(DataAnalysisProblemDataParameterName, "The data analysis problem data to use for training.")); 126 135 Parameters.Add(new ValueLookupParameter<StringValue>(SvmTypeParameterName, "The type of SVM to use.")); … … 132 141 Parameters.Add(new ValueLookupParameter<IntValue>(SamplesStartParameterName, "The first index of the data set partition the support vector machine should use for training.")); 133 142 Parameters.Add(new ValueLookupParameter<IntValue>(SamplesEndParameterName, "The last index of the data set partition the support vector machine should use for training.")); 143 Parameters.Add(new ValueLookupParameter<PercentValue>(ActualSamplesParameterName, "The percentage of the training set that should be acutally used for cross-validation (samples are picked randomly from the training set).")); 134 144 Parameters.Add(new ValueLookupParameter<IntValue>(NumberOfFoldsParameterName, "The number of folds to use for cross-validation.")); 135 145 Parameters.Add(new LookupParameter<DoubleValue>(QualityParameterName, "The cross validation quality reached with the given parameters.")); … … 137 147 138 148 public override IOperation Apply() { 139 double quality = PerformCrossValidation(DataAnalysisProblemData, 140 SamplesStart.Value, SamplesEnd.Value, 149 double reductionRatio = 1.0; 150 if (ActualSamplesParameter.ActualValue != null) 151 reductionRatio = ActualSamplesParameter.ActualValue.Value; 152 153 int reducedRows = (int)((SamplesEnd.Value - SamplesStart.Value) * reductionRatio); 154 var reducedProblemData = (DataAnalysisProblemData)DataAnalysisProblemData.Clone(); 155 ShuffleRows(RandomParameter.ActualValue, reducedProblemData.Dataset, SamplesStart.Value, SamplesEnd.Value); 156 157 double quality = PerformCrossValidation(reducedProblemData, 158 SamplesStart.Value, SamplesStart.Value + reducedRows, 141 159 SvmType.Value, KernelType.Value, 142 160 Cost.Value, Nu.Value, Gamma.Value, Epsilon.Value, NumberOfFolds.Value); … … 144 162 QualityParameter.ActualValue = new DoubleValue(quality); 145 163 return base.Apply(); 164 } 165 166 private void ShuffleRows(IRandom random, Dataset dataset, int start, int end) { 167 for (int row = end - 1; row > start ; row--) { 168 int otherRow = random.Next(start, row); 169 for (int column = 0; column < dataset.Columns; column++) { 170 double tmp = dataset[otherRow, column]; 171 dataset[otherRow, column] = dataset[row, column]; 172 dataset[row, column] = tmp; 173 } 174 } 146 175 } 147 176 … … 178 207 SVM.Problem scaledProblem = Scaling.Scale(rangeTransform, problem); 179 208 180 return SVM.Training.PerformCrossValidation(scaledProblem, parameter, nFolds );209 return SVM.Training.PerformCrossValidation(scaledProblem, parameter, nFolds, false); 181 210 } 182 211 } -
TabularUnified trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineModel.cs ¶
r3853 r3884 29 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 30 30 using HeuristicLab.Common; 31 using SVM; 32 using System.Linq; 31 33 32 34 namespace HeuristicLab.Problems.DataAnalysis.SupportVectorMachine { … … 36 38 [StorableClass] 37 39 [Item("SupportVectorMachineModel", "Represents a support vector machine model.")] 38 public class SupportVectorMachineModel : NamedItem { 40 public class SupportVectorMachineModel : NamedItem, IDataAnalysisModel { 41 public SupportVectorMachineModel() 42 : base() { 43 } 44 39 45 private SVM.Model model; 40 46 /// <summary> … … 67 73 } 68 74 69 public SupportVectorMachineModel() 70 : base() { 75 public IEnumerable<double> GetEstimatedValues(DataAnalysisProblemData problemData, int start, int end) { 76 SVM.Problem problem = SupportVectorMachineUtil.CreateSvmProblem(problemData, start, end); 77 SVM.Problem scaledProblem = Scaling.Scale(RangeTransform, problem); 78 79 return (from row in Enumerable.Range(0, scaledProblem.Count) 80 select SVM.Prediction.Predict(Model, scaledProblem.X[row])).ToList(); 71 81 } 72 82 … … 81 91 82 92 #region persistence 93 [Storable] 94 private int[] SupportVectorIndizes { 95 get { return this.Model.SupportVectorIndizes; } 96 set { this.Model.SupportVectorIndizes = value; } 97 } 98 83 99 [Storable] 84 100 private string ModelAsString { … … 131 147 StreamWriter writer = new StreamWriter(s); 132 148 writer.WriteLine("RangeTransform:"); 133 writer.Flush(); 149 writer.Flush(); 134 150 using (MemoryStream memStream = new MemoryStream()) { 135 151 SVM.RangeTransform.Write(memStream, model.RangeTransform);
Note: See TracChangeset
for help on using the changeset viewer.