def nfold(meta, data, target, num=10): total = len(data) validate = total // num ix = np.array(data.index) np.random.shuffle(ix) test = [] tries = [] nodes = [] for i in range(num): print 'val with', validate, total first = ix[:i*validate] second = ix[(i+1)*validate:] training = concat([data.loc[first], data.loc[second]]) validating = data.loc[ix[i*validate:(i+1)*validate]] node = Node(meta, training, target) tests = node.run() vals = node.validate(validating)[1] print tests, vals test.append(tests) tries.append(vals) nodes.append(node) avg = sum(tries)/len(tries) print avg node = Node(meta, data, target) wrong = node.run() return avg, wrong, node, test, tries, nodes