code: def cross_validation(learner, dataset, k=10, trials=1):
      
      if k is None:
          k = len(dataset.examples)
      if trials > 1:
          return mean([cross_validation(learner, dataset, k, trials=1)
                       for t in range(trials)])
      else:
          n = len(dataset.examples)
          random.shuffle(dataset.examples)
          return mean([train_and_test(learner, dataset, i*(n/k), (i+1)*(n/k))
                       for i in range(k)])
docs: Do k-fold cross_validate and return their mean.
      That is, keep out 1/k of the examples for testing on each of k runs.
      Shuffle the examples first; If trials>1, average over several shuffles.