def pn_select(scores, blacklist): pnl = [pn for pn in scores.iterkeys() if pn not in blacklist] if len(pnl) == 0: return None # no suitable product node found pnsl = [scores[pn] for pn in pnl] pni = argmin_fair(pnsl) return pnl[pni]
def ham_cluster(data, k): m, n = data.shape assert 1 <= k <= m pts = range(m) p = random.choice(pts) pts.remove(p) centers = [p] distances = [[hamming(data[i], data[p])] for i in range(m)] for i in range(k-1): pi = argmax_fair([min(distances[q]) for q in pts]) p = pts[pi] for q in pts: distances[q].append( hamming(data[q], data[p]) ) centers.append(p) pts.remove(p) a = [argmin_fair(distances[q]) for q in range(m)] # assignments return np.array(a)