コード例 #1
0
def model_selection(learner, dataset, k=10, trials=1):
    """[Fig 18.8]
    Return the optimal value of size having minimum error
    on validation set.
    err_train: A training error array, indexed by size
    err_val: A validation error array, indexed by size
    """
    errs = []
    size = 1

    while True:
        err = cross_validation(learner, size, dataset, k, trials)
        # Check for convergence provided err_val is not empty
        if err and not isclose(err[-1], err, rel_tol=1e-6):
            best_size = 0
            min_val = math.inf

            i = 0
            while i < size:
                if errs[i] < min_val:
                    min_val = errs[i]
                    best_size = i
                i += 1
            return learner(dataset, best_size)
        errs.append(err)
        size += 1
コード例 #2
0
 def normalize(self):
     """Make sure the probabilities of all values sum to 1.
     Returns the normalized distribution.
     Raises a ZeroDivisionError if the sum of the values is 0."""
     total = sum(self.prob.values())
     if not isclose(total, 1.0):
         for val in self.prob:
             self.prob[val] /= total
     return self