def score_all(kde_true, kde_hs, grid): """ evaluates kde_true on grid to get true probs returns error of each kde_hs's estimate of these probs """ ps_true = pykde.kde_eval(kde_true, grid) Ps = [pykde.kde_eval(kde_h, grid) for kde_h in kde_hs] return [loss(ps_true, ps) for ps in Ps]
def eval_all(matfile, outfile=None): """ fit kde to Y then return probability of each Yh under that kde """ Y, Yhs = load_Ys(matfile) kde_base, bandwidth = pykde.kde_fit_cv(Y) fnm = matfile.replace('.mat', '.pickle') pickle.dump(kde_base, open(fnm, "wb")) scorefcn = lambda ps: np.sum(np.log(ps)) if len(Yhs.shape) == 1: scores = [scorefcn(pykde.kde_eval(kde_base, y)) for y in Yhs] else: scores = [[scorefcn(pykde.kde_eval(kde_base, y)) for y in Yh]\ for Yh in Yhs] write_scores(scores, outfile) return scores