def measure(self, target: Labelling, predicted) -> float: avg_prec = 0.0 npos = target.positives() if (npos == 0): return 1.0 pos_idxs = target.where_positive() for i in pos_idxs: yi_rank = predicted[i] s = sum([1 for j in pos_idxs if predicted[j] <= yi_rank]) avg_prec += s / yi_rank return avg_prec / npos
def risk(self, prediction: Labelling, Pdist: ProbabilityDistribution) -> float: n = Pdist.getNumberOfLabels() k = prediction.positives() if (k == 0): return 1 - Pdist.fulljoint([0] * n) p = 0.0 for i in range(n): if (prediction[i] == 1): p += sum([ Pdist.getProbSize(i, j) / (k + j) for j in range(1, n + 1) ]) return 1 - 2 * p
def measure(self, target: Labelling, predicted) -> float: s = 0 for ri, yi in zip(predicted, target): if (yi == 0): continue for rj, yj in zip(predicted, target): if (yj == 1): continue if (ri > rj): s += 1 num_pos = target.positives() n = len(target) if (self.normalized == 2): return s / (num_pos * (n - num_pos)) if (self.normalized == 1): return 4 * s / (n * n) return s
def measure(self, target: Labelling, predicted) -> float: positives_idxs = target.where_positive() return sum([1 / predicted[pi] for pi in positives_idxs]) / sum( 1 / np.arange(1, target.positives() + 1))