-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathScore.py
More file actions
77 lines (55 loc) · 2.08 KB
/
Copy pathScore.py
File metadata and controls
77 lines (55 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import math
class CONTINGENCY_TABLE(object):
def __init__(self):
self.table = [[0.0 for _ in range(2)] for _ in range(2)]
self.updateNames()
def getTPR(self):
self.updateNames()
return self.TP/self.P
def getSPC(self):
self.updateNames()
return self.TN/self.N
def getPPV(self):
self.updateNames()
return self.TP/(self.TP + self.FP)
def getNPV(self):
self.updateNames()
return self.TN/(self.TN + self.FN)
def getFPR(self):
self.updateNames()
return self.FP/self.N
def getFDR(self):
self.updateNames()
return self.FP/(self.TP + self.FP)
def getACC(self):
self.updateNames()
return (self.TP+self.TN)/(self.P+self.N)
def getF1(self):
self.updateNames()
return 2*self.TP/(2*self.TP+self.FP+self.FN)
def getMCC(self):
self.updateNames()
return (self.TP*self.TN - self.FP*self.FN)/math.sqrt((self.TP+self.FP)*(self.TP+self.FN)*(self.TN+self.FP)*(self.TN+self.FN))
def getInformedeness(self):
return self.getTPR()+self.getSPC()
def getMarkedness(self):
return self.getPPV()+self.getNPV()
def getLR_Plus(self):
return self.getTPR()/self.getFPR()
def getLR_Minus(self):
return self.getFNR()/self.getTNR()
def getDOR(self):
return self.getLR_Plus()/self.getLR_Minus()
def resetTable(self):
self.table = [[0 for _ in range(2)] for _ in range(2)]
def updateNames(self):
self.TP = self.table[0][0]
self.FP = self.table[0][1]
self.FN = self.table[1][0]
self.TN = self.table[1][1]
self.P = self.TP + self.FN
self.N = self.FP + self.TN
class SCORE(object):
def __init__(self, prbPool):
self.CtClass = [CONTINGENCY_TABLE() for _ in range(prbPool.sizeY)]
self.CtInSight = [CONTINGENCY_TABLE() for _ in range(prbPool.sizeY)]