def test_node_add(): gp, args = create_problem_node() n = Add(list(range(len(args))), ytr=gp._ytr, mask=gp._mask) coef = n.compute_weight([x.hy for x in args]) assert n.eval(args) # a = map(lambda (a, b): a.hy * b, zip(args, coef)) a = [a.hy * b for a, b in zip(args, coef)] r = n.cumsum(a) assert n.hy.SSE(r) == 0 assert n.hy_test.SSE(r) == 0
def test_node_add(): gp, args = create_problem_node() n = Add(list(range(len(args))), ytr=gp._ytr, mask=gp._mask) D = np.array([tonparray(i.hy) for i in args]).T coef = n.compute_weight([x.hy for x in args]) assert n.eval(args) # a = map(lambda (a, b): a.hy * b, zip(args, coef)) a = [_a.hy * b for _a, b in zip(args, coef)] r = n.cumsum(a) print((D * coef).sum(axis=1)[:4], "*") print(tonparray(n.hy)[:4]) print(tonparray(r)[:4]) print(tonparray(gp._mask)[:4]) assert n.hy.SSE(r) == 0 assert n.hy_test.SSE(r) == 0
def test_ensemble(): from EvoDAG import RootGP from EvoDAG.model import Ensemble from EvoDAG.node import Add y = cl.copy() gps = [RootGP(generations=np.inf, tournament_size=2, early_stopping_rounds=-1, seed=seed, popsize=10).fit(X[:-10], y[:-10], test_set=X) for seed in range(2, 5)] ens = Ensemble([gp.model() for gp in gps]) res = [gp.decision_function() for gp in gps] res = [Add.cumsum([x[j] for x in res]) for j in range(3)] res = [x / 3. for x in res] r2 = ens.decision_function(None) for a, b in zip(res, r2): assert a.SSE(b) == 0 r2 = ens.predict(None)
def test_ensemble(): from EvoDAG import RootGP from EvoDAG.model import Ensemble from EvoDAG.node import Add y = cl.copy() gps = [ RootGP(generations=np.inf, tournament_size=2, early_stopping_rounds=-1, seed=seed, multiple_outputs=True, popsize=10).fit(X[:-10], y[:-10], test_set=X) for seed in range(2, 5) ] ens = Ensemble([gp.model() for gp in gps]) res = [gp.decision_function() for gp in gps] res = [Add.cumsum([x[j] for x in res]) for j in range(3)] res = [x * (1 / 3.) for x in res] r2 = ens.decision_function(None) for a, b in zip(res, r2): print(a.SSE(b), a.data, b.data, b.full_array()) assert a.SSE(b) == 0
def test_ensemble_model(): from EvoDAG import RootGP from EvoDAG.model import Ensemble from EvoDAG.node import Add y = cl.copy() mask = y == 0 y[mask] = 1 y[~mask] = -1 gps = [RootGP(generations=np.inf, tournament_size=2, early_stopping_rounds=-1, seed=seed, popsize=10).fit(X[:-10], y[:-10], test_set=X) for seed in range(3)] ens = Ensemble([gp.model() for gp in gps]) res = [gp.decision_function() for gp in gps] res = Add.cumsum(res) / 3 r2 = ens.decision_function(None) assert res.SSE(r2) == 0 a = SparseArray.fromlist(ens.predict(None)) assert r2.sign().SSE(a) == 0