Commit b91dabaaa9d968466bf25f4ed9a3d41a4677b709
1 parent
336d03bf
Exists in
master
and in
1 other branch
Added MCC metric.
Showing
1 changed file
with
23 additions
and
0 deletions
Show diff stats
src/evaluation.py
@@ -140,6 +140,29 @@ class FPR(Metric): | @@ -140,6 +140,29 @@ class FPR(Metric): | ||
140 | return (float(len(evaluation.false_positive))/ | 140 | return (float(len(evaluation.false_positive))/ |
141 | evaluation.real_negative_len) | 141 | evaluation.real_negative_len) |
142 | 142 | ||
143 | +class MCC(Metric): | ||
144 | + """ | ||
145 | + Matthews correlation coefficient. | ||
146 | + """ | ||
147 | + def __init__(self): | ||
148 | + """ | ||
149 | + Set metric description. | ||
150 | + """ | ||
151 | + self.desc = " MCC " | ||
152 | + | ||
153 | + def run(self,evaluation): | ||
154 | + """ | ||
155 | + Compute metric. | ||
156 | + """ | ||
157 | + VP = len(evaluation.true_positive) | ||
158 | + FP = len(evaluation.false_positive) | ||
159 | + FN = len(evaluation.false_negative) | ||
160 | + VN = evaluation.true_negative_len | ||
161 | + if (VP+FP)==0 or (VP+FN)==0 or (VN+FP)==0 or (VN+FN)==0: | ||
162 | + return 0 | ||
163 | + MCC = (((VP*VN)-(FP*FN))/math.sqrt((VP+FP)*(VP+FN)*(VN+FP)*(VN+FN))) | ||
164 | + return MCC | ||
165 | + | ||
143 | class F_score(Metric): | 166 | class F_score(Metric): |
144 | """ | 167 | """ |
145 | Classification accuracy metric which correlates precision and recall into an | 168 | Classification accuracy metric which correlates precision and recall into an |