Changeset 12075 for branches/SymbolicExpressionTreeDiversityAnalyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification
- Timestamp:
- 02/25/15 17:53:25 (10 years ago)
- Location:
- branches/SymbolicExpressionTreeDiversityAnalyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SymbolicExpressionTreeDiversityAnalyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification
- Property svn:mergeinfo changed (with no actual effect on merging)
-
branches/SymbolicExpressionTreeDiversityAnalyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/SingleObjective/SymbolicClassificationPhenotypicDiversityAnalyzer.cs
r12064 r12075 20 20 #endregion 21 21 22 using System.Collections.Generic; 22 23 using System.Linq; 23 24 using HeuristicLab.Analysis; … … 26 27 using HeuristicLab.Data; 27 28 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 29 using HeuristicLab.Optimization; 28 30 using HeuristicLab.Parameters; 29 31 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 32 34 [Item("SymbolicClassificationPhenotypicDiversityAnalyzer", "An analyzer which calculates diversity based on the phenotypic distance between trees")] 33 35 [StorableClass] 34 public class SymbolicClassificationPhenotypicDiversityAnalyzer : SingleObjectivePopulationDiversityAnalyzer {36 public class SymbolicClassificationPhenotypicDiversityAnalyzer : PopulationSimilarityAnalyzer { 35 37 #region parameter names 36 38 private const string SymbolicExpressionTreeParameterName = "SymbolicExpressionTree"; … … 74 76 #endregion 75 77 76 public SymbolicClassificationPhenotypicDiversityAnalyzer( ) {77 SimilarityCalculator = new SymbolicExpressionTreePhenotypicSimilarityCalculator() { SolutionVariableName = "SymbolicExpressionTree", QualityVariableName = "Quality" };78 public SymbolicClassificationPhenotypicDiversityAnalyzer(IEnumerable<ISingleObjectiveSolutionSimilarityCalculator> validSimilarityCalculators) 79 : base(validSimilarityCalculators) { 78 80 #region add parameters 79 81 Parameters.Add(new ScopeTreeLookupParameter<ISymbolicExpressionTree>(SymbolicExpressionTreeParameterName, "The symbolic expression trees.")); … … 85 87 Parameters.Add(new FixedValueParameter<BoolValue>(UseClassValuesParameterName, "Specifies whether the raw estimated values of the tree or the corresponding class values should be used for similarity calculation.", new BoolValue(false))); 86 88 #endregion 89 90 UpdateCounterParameter.ActualName = "PhenotypicDiversityAnalyzerUpdateCounter"; 87 91 } 88 92 … … 101 105 102 106 public override IOperation Apply() { 103 var trees = SymbolicExpressionTreeParameter.ActualValue; 104 var interpreter = SymbolicDataAnalysisTreeInterpreterParameter.ActualValue; 105 var problemData = ProblemDataParameter.ActualValue; 106 var ds = ProblemDataParameter.ActualValue.Dataset; 107 var rows = ProblemDataParameter.ActualValue.TrainingIndices; 108 var modelCreator = ModelCreatorParameter.ActualValue; 109 var estimationLimits = EstimationLimitsParameter.ActualValue; 110 var evaluatedValues = new ItemArray<DoubleArray>(trees.Length); 111 for (int i = 0; i < trees.Length; ++i) { 112 var model = (IDiscriminantFunctionClassificationModel)modelCreator.CreateSymbolicDiscriminantFunctionClassificationModel(trees[i], interpreter, estimationLimits.Lower, estimationLimits.Upper); 113 model.RecalculateModelParameters(problemData, rows); 114 var values = UseClassValues ? model.GetEstimatedClassValues(ds, rows) : model.GetEstimatedValues(ds, rows); 115 evaluatedValues[i] = new DoubleArray(values.ToArray()); 107 int updateInterval = UpdateIntervalParameter.Value.Value; 108 IntValue updateCounter = UpdateCounterParameter.ActualValue; 109 110 if (updateCounter == null) { 111 updateCounter = new IntValue(updateInterval); 112 UpdateCounterParameter.ActualValue = updateCounter; 116 113 } 117 EvaluatedValuesParameter.ActualValue = evaluatedValues; 114 115 if (updateCounter.Value == updateInterval) { 116 var trees = SymbolicExpressionTreeParameter.ActualValue; 117 var interpreter = SymbolicDataAnalysisTreeInterpreterParameter.ActualValue; 118 var problemData = ProblemDataParameter.ActualValue; 119 var ds = ProblemDataParameter.ActualValue.Dataset; 120 var rows = ProblemDataParameter.ActualValue.TrainingIndices; 121 var modelCreator = ModelCreatorParameter.ActualValue; 122 var estimationLimits = EstimationLimitsParameter.ActualValue; 123 var evaluatedValues = new ItemArray<DoubleArray>(trees.Length); 124 for (int i = 0; i < trees.Length; ++i) { 125 var model = 126 (IDiscriminantFunctionClassificationModel) 127 modelCreator.CreateSymbolicDiscriminantFunctionClassificationModel(trees[i], interpreter, 128 estimationLimits.Lower, estimationLimits.Upper); 129 model.RecalculateModelParameters(problemData, rows); 130 var values = UseClassValues ? model.GetEstimatedClassValues(ds, rows) : model.GetEstimatedValues(ds, rows); 131 evaluatedValues[i] = new DoubleArray(values.ToArray()); 132 } 133 EvaluatedValuesParameter.ActualValue = evaluatedValues; 134 } 118 135 return base.Apply(); 119 136 } -
branches/SymbolicExpressionTreeDiversityAnalyzers/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/SingleObjective/SymbolicClassificationSingleObjectiveProblem.cs
r12068 r12075 22 22 using HeuristicLab.Common; 23 23 using HeuristicLab.Core; 24 using HeuristicLab.Optimization; 24 25 using HeuristicLab.Parameters; 25 26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 115 116 Operators.Add(new SymbolicClassificationSingleObjectiveTrainingParetoBestSolutionAnalyzer()); 116 117 Operators.Add(new SymbolicClassificationSingleObjectiveValidationParetoBestSolutionAnalyzer()); 117 Operators.Add(new SymbolicClassificationPhenotypicDiversityAnalyzer());118 118 Operators.Add(new SymbolicExpressionTreePhenotypicSimilarityCalculator()); 119 Operators.Add(new SymbolicClassificationPhenotypicDiversityAnalyzer(Operators.OfType<SymbolicExpressionTreePhenotypicSimilarityCalculator>()) { DiversityResultName = "Phenotypic Similarity" }); 119 120 ParameterizeOperators(); 120 121 } … … 148 149 } 149 150 150 foreach (var op in Operators.OfType< SymbolicExpressionTreePhenotypicSimilarityCalculator>()) {151 foreach (var op in Operators.OfType<ISingleObjectiveSolutionSimilarityCalculator>()) { 151 152 op.SolutionVariableName = SolutionCreator.SymbolicExpressionTreeParameter.ActualName; 152 op.ProblemData = ProblemData; 153 op.Interpreter = SymbolicExpressionTreeInterpreter; 154 } 153 op.QualityVariableName = Evaluator.QualityParameter.ActualName; 155 154 156 foreach (var op in Operators.OfType<SymbolicClassificationPhenotypicDiversityAnalyzer>()) { 157 var sim = Operators.OfType<SymbolicExpressionTreePhenotypicSimilarityCalculator>().FirstOrDefault(); 158 if (sim != null) 159 op.SimilarityCalculator = sim; 155 if (op is SymbolicExpressionTreePhenotypicSimilarityCalculator) { 156 var phenotypicSimilarityCalculator = (SymbolicExpressionTreePhenotypicSimilarityCalculator)op; 157 phenotypicSimilarityCalculator.ProblemData = ProblemData; 158 phenotypicSimilarityCalculator.Interpreter = SymbolicExpressionTreeInterpreter; 159 } 160 160 } 161 161 }
Note: See TracChangeset
for help on using the changeset viewer.