Changeset 8814 for branches/ClassificationEnsembleVoting/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/WeightCalculators/MajorityVoteWeightCalculator.cs
- Timestamp:
- 10/16/12 15:19:40 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ClassificationEnsembleVoting/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/WeightCalculators/MajorityVoteWeightCalculator.cs
r8297 r8814 52 52 } 53 53 54 public override double GetConfidence(IEnumerable<IClassificationSolution> solutions, int index, double estimatedClassValue ) {54 public override double GetConfidence(IEnumerable<IClassificationSolution> solutions, int index, double estimatedClassValue, CheckPoint handler) { 55 55 if (solutions.Count() < 1) 56 56 return double.NaN; 57 Dataset dataset = solutions.First().ProblemData.Dataset; 58 int correctEstimated = solutions.Select(s => s.Model.GetEstimatedClassValues(dataset, Enumerable.Repeat(index, 1)).First()) 57 var votingSolutions = solutions.Where(s => handler(s.ProblemData, index)); 58 if (votingSolutions.Count() < 1) 59 return double.NaN; 60 Dataset dataset = votingSolutions.First().ProblemData.Dataset; 61 int correctEstimated = votingSolutions.Select(s => s.Model.GetEstimatedClassValues(dataset, Enumerable.Repeat(index, 1)).First()) 59 62 .Where(x => x.Equals(estimatedClassValue)) 60 63 .Count(); 61 return ((double)correctEstimated / (double) solutions.Count() - 0.5) * 2;64 return ((double)correctEstimated / (double)votingSolutions.Count() - 0.5) * 2; 62 65 } 63 66 64 public override IEnumerable<double> GetConfidence(IEnumerable<IClassificationSolution> solutions, IEnumerable<int> indices, IEnumerable<double> estimatedClassValue ) {67 public override IEnumerable<double> GetConfidence(IEnumerable<IClassificationSolution> solutions, IEnumerable<int> indices, IEnumerable<double> estimatedClassValue, CheckPoint handler) { 65 68 if (solutions.Count() < 1) 66 69 return Enumerable.Repeat(double.NaN, indices.Count()); 70 71 List<int> indicesList = indices.ToList(); 67 72 Dataset dataset = solutions.First().ProblemData.Dataset; 68 var estimationsPerSolution = solutions.Select(s => s.Model.GetEstimatedClassValues(dataset, indices).ToArray()).ToArray();73 var solValues = solutions.ToDictionary(x => x, x => x.Model.GetEstimatedClassValues(dataset, indicesList).ToArray()); 69 74 double[] estimatedClassValueArr = estimatedClassValue.ToArray(); 70 75 double correctEstimated; 71 76 double[] confidences = new double[indices.Count()]; 72 77 73 for (int i = 0; i < indices.Count(); i++) { 74 correctEstimated = estimationsPerSolution.Where(x => DoubleExtensions.IsAlmost(x[i], estimatedClassValueArr[i])).Count(); 75 confidences[i] = (correctEstimated / (double)solutions.Count() - 0.5) * 2; 78 for (int i = 0; i < indicesList.Count; i++) { 79 var votingSolutions = solValues.Where(x => handler(x.Key.ProblemData, indicesList[i])); 80 correctEstimated = votingSolutions.Where(x => DoubleExtensions.IsAlmost(x.Value[i], estimatedClassValueArr[i])).Count(); 81 confidences[i] = (correctEstimated / (double)votingSolutions.Count() - 0.5) * 2; 76 82 } 77 83
Note: See TracChangeset
for help on using the changeset viewer.