evaluate.c
Go to the documentation of this file.
1 
10 #include <GKlib.h>
11 
12 /**********************************************************************
13  * This function computes the max accuracy score of a ranked list,
14  * given +1/-1 class list
15  **********************************************************************/
16 float ComputeAccuracy(int n, gk_fkv_t *list)
17 {
18  int i, P, N, TP, FN = 0;
19  float bAccuracy = 0.0;
20  float acc;
21 
22  for (P=0, i=0;i<n;i++)
23  P += (list[i].val == 1? 1 : 0);
24  N = n - P;
25 
26  TP = FN = 0;
27 
28  for(i=0; i<n; i++){
29  if (list[i].val == 1)
30  TP++;
31  else
32  FN++;
33 
34  acc = (TP + N - FN) * 100.0/ (P + N) ;
35  if (acc > bAccuracy)
36  bAccuracy = acc;
37  }
38 
39  return bAccuracy;
40 }
41 
42 
43 /*****************************************************************************
44  * This function computes the ROC score of a ranked list, given a +1/-1 class
45  * list.
46  ******************************************************************************/
47 float ComputeROCn(int n, int maxN, gk_fkv_t *list)
48 {
49  int i, P, TP, FP, TPprev, FPprev, AUC;
50  float prev;
51 
52  FP = TP = FPprev = TPprev = AUC = 0;
53  prev = list[0].key -1;
54 
55  for (P=0, i=0; i<n; i++)
56  P += (list[i].val == 1 ? 1 : 0);
57 
58  for (i=0; i<n && FP < maxN; i++) {
59  if (list[i].key != prev) {
60  AUC += (TP+TPprev)*(FP-FPprev)/2;
61  prev = list[i].key;
62  FPprev = FP;
63  TPprev = TP;
64  }
65  if (list[i].val == 1)
66  TP++;
67  else {
68  FP++;
69  }
70  }
71  AUC += (TP+TPprev)*(FP-FPprev)/2;
72 
73  return (TP*FP > 0 ? (float)(1.0*AUC/(P*FP)) : 0.0);
74 }
75 
76 
77 /*****************************************************************************
78 * This function computes the median rate of false positive for each positive
79 * instance.
80 ******************************************************************************/
81 float ComputeMedianRFP(int n, gk_fkv_t *list)
82 {
83  int i, P, N, TP, FP;
84 
85  P = N = 0;
86  for (i=0; i<n; i++) {
87  if (list[i].val == 1)
88  P++;
89  else
90  N++;
91  }
92 
93  FP = TP = 0;
94  for (i=0; i<n && TP < (P+1)/2; i++) {
95  if (list[i].val == 1)
96  TP++;
97  else
98  FP++;
99  }
100 
101  return 1.0*FP/N;
102 }
103 
104 /*********************************************************
105  * Compute the mean
106  ********************************************************/
107 float ComputeMean (int n, float *values)
108 {
109  int i;
110  float mean = 0.0;
111 
112  for(i=0; i < n; i++)
113  mean += values[i];
114 
115  return 1.0 * mean/ n;
116 }
117 
118 /********************************************************
119  * Compute the standard deviation
120  ********************************************************/
121 float ComputeStdDev(int n, float *values)
122 {
123  int i;
124  float mean = ComputeMean(n, values);
125  float stdDev = 0;
126 
127  for(i=0;i<n;i++){
128  stdDev += (values[i] - mean)* (values[i] - mean);
129  }
130 
131  return sqrt(1.0 * stdDev/n);
132 }
const gtsam::Symbol key('X', 0)
float ComputeStdDev(int n, float *values)
Definition: evaluate.c:121
float ComputeMedianRFP(int n, gk_fkv_t *list)
Definition: evaluate.c:81
int n
leaf::MyValues values
#define N
Definition: gksort.c:12
static const Vector2 mean(20, 40)
Definition: pytypes.h:1979
float ComputeMean(int n, float *values)
Definition: evaluate.c:107
float ComputeAccuracy(int n, gk_fkv_t *list)
Definition: evaluate.c:16
float ComputeROCn(int n, int maxN, gk_fkv_t *list)
Definition: evaluate.c:47
Jet< T, N > sqrt(const Jet< T, N > &f)
Definition: jet.h:418


gtsam
Author(s):
autogenerated on Tue Jul 4 2023 02:34:12