def test_gridminimise_return(): from milksets.wine import load features,labels = load() learner = fast_classifier() gridminimise(learner, features, labels, { 'ignore' : [0] }) _,error = gridminimise(learner, features, labels, { 'ignore' : [0] }, return_value=True, nfolds=5) cmat,_ = milk.nfoldcrossvalidation(features, labels, learner=learner, nfolds=5) assert error == cmat.sum()-cmat.trace()
def test_gridminimise_return(): from milksets.wine import load features, labels = load() learner = fast_classifier() gridminimise(learner, features, labels, {'ignore': [0]}) _, error = gridminimise(learner, features, labels, {'ignore': [0]}, return_value=True, nfolds=5) cmat, _ = milk.nfoldcrossvalidation(features, labels, learner=learner, nfolds=5) assert error == cmat.sum() - cmat.trace()
def test_gridminimise(): features = np.arange(100) labels = np.tile((0, 1), 50) paramspace = { 'a': np.arange(4), 'b': np.arange(-3, 3), 'c': np.linspace(2., 10) } best, value = gridminimise(simple_learner(), features, labels, paramspace, measure=(lambda _, p: p[0]), return_value=True) best = dict(best) val = f(best['a'], best['b'], best['c']) assert value == val * 100 for a in np.arange(4): for b in np.arange(-3, 3): for c in np.linspace(2., 10): assert val <= f(a, b, c) gs = gridsearch(simple_learner(), paramspace, measure=(lambda _, p: p[0]), annotate=True) model = gs.train(features, labels) assert model.value == value assert model.arguments == val
def test_gridminimise(): from milksets.wine import load features, labels = load() x = gridminimise(milk.supervised.svm_simple(kernel=np.dot, C=2.), features[::2], labels[::2] == 0, {'C': (0.5, )}) cval, = x assert cval == ('C', .5)
def test_gridminimise(): features = np.arange(100) labels = np.tile((0,1), 50) best = gridminimise(simple_learner(), features, labels, {'a': np.arange(4), 'b' : np.arange(-3,3), 'c' : np.linspace(2., 10) }, measure=(lambda _, p: p[0])) best = dict(best) val = f(best['a'], best['b'], best['c']) for a in np.arange(4): for b in np.arange(-3,3): for c in np.linspace(2., 10): assert val <= f(a,b,c)
def test_gridminimise(): features = np.arange(100) labels = np.tile((0,1), 50) paramspace = { 'a': np.arange(4), 'b' : np.arange(-3,3), 'c' : np.linspace(2., 10) } best,value = gridminimise(simple_learner(), features, labels, paramspace, measure=(lambda _, p: p[0]), return_value=True) best = dict(best) val = f(best['a'], best['b'], best['c']) assert value == val*100 for a in np.arange(4): for b in np.arange(-3,3): for c in np.linspace(2., 10): assert val <= f(a,b,c) gs = gridsearch(simple_learner(), paramspace, measure=(lambda _, p: p[0]), annotate=True) model = gs.train(features, labels) assert model.value == value assert model.arguments == val
def train(self, features, labels, **kwargs): from milk.supervised.gridsearch import gridminimise c_features = np.concatenate([f for f, _ in features if len(f)]) c_features = c_features[::self.sample] nprocs = parallel.get_procs(use_current=True) tow = multiprocessing.Queue() fromw = multiprocessing.Queue() for k in self.ks: for ri in xrange(self.rmax): tow.put((k, ri)) for i in xrange(nprocs): tow.put(('shutdown', None)) workers = [ kmeans_cluster(c_features, tow, fromw) for i in xrange(nprocs) ] for w in workers: if nprocs > 1: w.start() else: w.execute() try: codebooks = [fromw.get() for i in xrange(len(self.ks) * self.rmax)] finally: tow.close() tow.join_thread() if nprocs > 1: for w in workers: w.join() parallel.release_procs(len(workers), count_current=True) base = codebook_learner(self.base) base.normalise = self.normalise if len(codebooks) > 1: (best, ) = gridminimise(base, features, labels, {'codebook': codebooks}, nfolds=self.nfolds) _, codebook = best else: (codebook, ) = codebooks base.codebook = codebook return base.train(features, labels)
def train(self, features, labels, **kwargs): from milk.supervised.gridsearch import gridminimise c_features = np.concatenate([f for f, _ in features if len(f)]) c_features = c_features[:: self.sample] nprocs = parallel.get_procs(use_current=True) tow = multiprocessing.Queue() fromw = multiprocessing.Queue() for k in self.ks: for ri in xrange(self.rmax): tow.put((k, ri)) for i in xrange(nprocs): tow.put(("shutdown", None)) workers = [kmeans_cluster(c_features, tow, fromw) for i in xrange(nprocs)] for w in workers: if nprocs > 1: w.start() else: w.execute() try: codebooks = [fromw.get() for i in xrange(len(self.ks) * self.rmax)] finally: tow.close() tow.join_thread() if nprocs > 1: for w in workers: w.join() parallel.release_procs(len(workers), count_current=True) base = codebook_learner(self.base) base.normalise = self.normalise if len(codebooks) > 1: (best,) = gridminimise(base, features, labels, {"codebook": codebooks}, nfolds=self.nfolds) _, codebook = best else: (codebook,) = codebooks base.codebook = codebook return base.train(features, labels)
def test_gridminimise(): from milksets.wine import load features, labels = load() x = gridminimise(milk.supervised.svm_simple(kernel=np.dot, C=2.), features[::2], labels[::2] == 0, {'C' : (0.5,) }) cval, = x assert cval == ('C', .5)