def round_robin(*args): CsrEnsembler.check_validlity(*args) base = 1.0 / (len(args) + 1.0) mm = max((x.indptr[1:] - x.indptr[:-1]).max() for x in args) ret = smat_util.get_relevance_csr(args[0], mm) ret.data[:] += len(args) * base for i, x in enumerate(args[1:], 1): tmp = smat_util.get_relevance_csr(x, mm) tmp.data[:] += (len(args) - i) * base ret = ret.maximum(tmp) ret = smat_util.sorted_csr(ret) ret.data /= len(args) return ret
def rank_average(*args): CsrEnsembler.check_validlity(*args) mm = max((x.indptr[1:] - x.indptr[:-1]).max() for x in args) ret = sum(smat_util.get_relevance_csr(csr, mm) for csr in args) ret = smat_util.sorted_csr(ret) ret.data /= len(args) return ret