THU-IAR's picture
Upload 198 files
2d06dcc verified
import numpy as np
def F_measure(cm):
idx = 0
rs, ps, fs = [], [], []
n_class = cm.shape[0]
for idx in range(n_class):
TP = cm[idx][idx]
r = TP / cm[idx].sum() if cm[idx].sum() != 0 else 0
p = TP / cm[:, idx].sum() if cm[:, idx].sum() != 0 else 0
f = 2 * r * p / (r + p) if (r + p) != 0 else 0
rs.append(r * 100)
ps.append(p * 100)
fs.append(f * 100)
f = np.mean(fs).round(4)
f_seen = np.mean(fs[:-1]).round(4)
f_unseen = round(fs[-1], 4)
results = {}
results['F1-known'] = f_seen
results['F1-open'] = f_unseen
results['F1'] = f
return results