def modeler_l2_errors(modeler, sample, sample_divisions=2): sample_list = divide_sample(sample, sample_divisions) l2_errors = [] sens_dict = defaultdict(list) for i in range(len(sample_list)): training_sample = sample_list[i] training_in, training_out = sample_to_io(training_sample) model = modeler(training_in, training_out) sens_dict_i = model.sensitivity_dict(training_out) sorted_sens = sorted(sens_dict_i.iteritems(), key=lambda x: x[1]['t']) total = 0 for syms, d in sorted_sens: sens_dict[syms].append(d['s']) # print "Component functions" # for s, p in model.component_functions(coeff_gate=1.0e-08).items(): # print " ", s, p for j in range(len(sample_list)): if i != j: testing_sample = sample_list[j] test_in, test_out = sample_to_io(testing_sample) test_approx = array_map(model, test_in) l2_errors.append(relative_l2_error(test_out, test_approx)) keys, vals = zip( *sorted(sens_dict.items(), key=lambda t: sum(t[1]), reverse=True)) bp.plot_boxplots(vals[:15], [str(list(k)) for k in keys][:15]) plt.show() return l2_errors
def __init__(self, p, space): self.syms = space.syms self.p = p def f(x): return float(self.p.eval(tuple(x))) self.sample_values = array_map(f, space.sample) self.sq_norm = sum(self.sample_values**2)
def run_training_test(sample, expander, training_proportion=0.5): training_data, test_data = divide_sample(sample, training_proportion) training_in, training_out = sample_to_io(training_data) test_in, test_out = sample_to_io(test_data) trained_expansion = expander(training_in, training_out) test_approx = array_map(trained_expansion, test_in) training_approx = array_map(trained_expansion, training_in) print "Training L2 error:", \ relative_l2_error(training_out, training_approx) print "Training L1 error:", \ average_relative_l1_error(training_out, training_approx) print "Test L1 error:", \ average_relative_l1_error(test_out, test_approx) return relative_l2_error(test_out, test_approx)
def modeler_l2_errors(modeler, sample, sample_divisions=2): sample_list = divide_sample(sample, sample_divisions) l2_errors = [] sens_dict = defaultdict(list) for i in range(len(sample_list)): training_sample = sample_list[i] training_in, training_out = sample_to_io(training_sample) model = modeler(training_in, training_out) sens_dict_i = model.sensitivity_dict(training_out) sorted_sens = sorted( sens_dict_i.iteritems(), key=lambda x: x[1]['t'] ) total = 0 for syms, d in sorted_sens: sens_dict[syms].append(d['s']) # print "Component functions" # for s, p in model.component_functions(coeff_gate=1.0e-08).items(): # print " ", s, p for j in range(len(sample_list)): if i != j: testing_sample = sample_list[j] test_in, test_out = sample_to_io(testing_sample) test_approx = array_map(model, test_in) l2_errors.append( relative_l2_error(test_out, test_approx) ) keys, vals = zip(*sorted(sens_dict.items(), key=lambda t: sum(t[1]), reverse=True)) bp.plot_boxplots(vals[:15], [str(list(k)) for k in keys][:15]) plt.show() return l2_errors