def __call__(self, state, scope, pos, paramTypes, k, datum, codebook, *args): if k < 0: raise PFARuntimeException("k must be nonnegative", self.errcodeBase + 0, self.name, pos) if len(args) == 1: metric, = args distances = [ callfcn(state, scope, metric, [datum, x]) for x in codebook ] else: if len(codebook) == 0: return [] else: dimensions = len(datum) for x in codebook: if len(x) != dimensions: raise PFARuntimeException( "inconsistent dimensionality", self.errcodeBase + 1, self.name, pos) distances = [ sum((di - xi)**2 for di, xi in zip(datum, x)) for x in codebook ] indexes = argLowestN(distances, k, lambda a, b: a < b) return [codebook[i] for i in indexes]
def __call__(self, state, scope, pos, paramTypes, n, datum, clusters, *args): if n < 0: raise PFARuntimeException("n must be nonnegative", self.errcodeBase + 0, self.name, pos) if len(args) == 1: metric, = args distances = [callfcn(state, scope, metric, [datum, x["center"]]) for x in clusters] else: distances = [sum((di - xi)**2 for di, xi in zip(datum, x["center"])) for x in clusters] indexes = argLowestN(distances, n, lambda a, b: a < b) return [clusters[i] for i in indexes]
def __call__(self, state, scope, pos, paramTypes, k, datum, codebook, *args): if k < 0: raise PFARuntimeException("k must be nonnegative", self.errcodeBase + 0, self.name, pos) if len(args) == 1: metric, = args distances = [callfcn(state, scope, metric, [datum, x]) for x in codebook] else: if len(codebook) == 0: return [] else: dimensions = len(datum) for x in codebook: if len(x) != dimensions: raise PFARuntimeException("inconsistent dimensionality", self.errcodeBase + 1, self.name, pos) distances = [sum((di - xi)**2 for di, xi in zip(datum, x)) for x in codebook] indexes = argLowestN(distances, k, lambda a, b: a < b) return [codebook[i] for i in indexes]