Changeset 668 for trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/ROCAnalyser.cs
- Timestamp:
- 10/15/08 12:26:48 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.GP.StructureIdentification.Classification/ROCAnalyser.cs
r667 r668 29 29 30 30 31 namespace HeuristicLab.GP. Classification {31 namespace HeuristicLab.GP.StructureIdentification.Classification { 32 32 public class ROCAnalyser : OperatorBase { 33 private ItemList values;34 33 35 34 public override string Description { … … 56 55 rocValues.Clear(); 57 56 57 //ROC Curve starts at 0,0 58 ItemList row = new ItemList(); 59 row.Add(new DoubleData(0)); 60 row.Add(new DoubleData(0)); 61 rocValues.Add(row); 62 58 63 //calculate new ROC Values 64 double estimated; 65 double original; 66 double positiveClassKey; 67 double negativeClassKey; 68 double truePositiveRate; 69 double falsePositiveRate; 59 70 71 //initialize classes dictionary 72 Dictionary<double, List<double>> classes = new Dictionary<double, List<double>>(); 73 foreach (ItemList value in values) { 74 estimated = ((DoubleData)value[0]).Data; 75 original = ((DoubleData)value[1]).Data; 76 if (!classes.ContainsKey(original)) 77 classes[original] = new List<double>(); 78 classes[original].Add(estimated); 79 } 80 81 //check for 2 classes classification problem 82 if (classes.Keys.Count != 2) 83 throw new Exception("ROCAnalyser only handles 2 class classification problems"); 84 85 //sort estimated values in classes dictionary 86 foreach (List<double> estimatedValues in classes.Values) 87 estimatedValues.Sort(); 88 89 //calculate truePosivite- & falsePositiveRate 90 positiveClassKey = classes.Keys.Min<double>(); 91 negativeClassKey = classes.Keys.Max<double>(); 92 for (int i = 0; i < classes[negativeClassKey].Count; i++) { 93 truePositiveRate = classes[positiveClassKey].Count<double>(value => value < classes[negativeClassKey][i]) / classes[positiveClassKey].Count; 94 //stop calculation if truePositiveRate = 1; save runtime 95 if (truePositiveRate == 1) 96 break; 97 falsePositiveRate = (i) / classes[negativeClassKey].Count; 98 row = new ItemList(); 99 row.Add(new DoubleData(falsePositiveRate)); 100 row.Add(new DoubleData(truePositiveRate)); 101 rocValues.Add(row); 102 } 103 104 //ROC ends at 1,1 105 row = new ItemList(); 106 row.Add(new DoubleData(1)); 107 row.Add(new DoubleData(1)); 108 rocValues.Add(row); 60 109 61 110 return null;
Note: See TracChangeset
for help on using the changeset viewer.