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