- Timestamp:
- Dec 13, 2007, 9:34:16 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/yat/statistics/AUC.cc
r865 r998 98 98 double cumsum_pos_w=0; 99 99 double cumsum_neg_w=0; 100 double cache_cumsum_pos_w=0; 101 double cache_cumsum_neg_w=0; 100 102 typedef MultiMap::const_iterator iter; 101 103 102 for (iter i=m.begin(); i!=m.end(); ++i) 104 for (iter i=m.begin(); i!=m.end(); ++i) { 103 105 if (i->second.first){ 104 area += i->second.second * cumsum_neg_w; 105 cumsum_pos_w += i->second.second; 106 cache_cumsum_pos_w += i->second.second; 106 107 } 107 108 else 108 c umsum_neg_w += i->second.second;109 cache_cumsum_neg_w += i->second.second; 109 110 111 iter n(i); 112 ++n; 113 // last entry OR entry is smaller than next one 114 if ( n==m.end() || i->first < n->first) { 115 if (i->second.first) 116 area += cache_cumsum_pos_w * ( cumsum_neg_w + cache_cumsum_neg_w/2 ); 117 cumsum_pos_w += cache_cumsum_pos_w; 118 cache_cumsum_pos_w = 0; 119 cumsum_neg_w += cache_cumsum_neg_w; 120 cache_cumsum_neg_w = 0; 121 } 122 } 110 123 // max area is cumsum_neg_w * cumsum_pos_w 111 124 area/=(cumsum_neg_w*cumsum_pos_w);
Note: See TracChangeset
for help on using the changeset viewer.