[p, q] = get_products(); % quantity sum over a day %plot(sum(q')); train_data = q( 1:28, :); real_data = q(29:42, :); pred_methods = { { 'mean', @mean_pred }, { 'regress', @regress_pred }, { 'quad', @quad_regress_pred }, { 'log reg.', @log_regress_pred }, { 'sevenday' @sevenday_pred }, { 'random' @rand_pred }, { 'regress2' @regress_frequency_removal } }; num_methods = size(pred_methods, 1); pred_list = {}; for i = 1:num_methods pred_list{i} = pred_methods{i}{2}(p, train_data); end qerr = terr = zeros(1, num_methods); err = zeros(num_methods, size(real_data,2)); for i = 1:num_methods [qerr(i), terr(i), err(i, :)] = calc_error(pred_methods{i}{1}, real_data, pred_list{i}); end opt_data = opt_pred(real_data, pred_list); [opqerr, opterr, opt_err] = calc_error('optimize', real_data, opt_data); qerr = [ qerr opqerr ]; terr = [ terr opterr ]; bar(qerr); bar(terr); [min_err, err_idx] = min(err); printf('global min. error: %d\n', sum(min_err)); printf('local min count:'); local_min_count=[]; for i=1:size(err,1) local_min_count = [ local_min_count sum(sum(err_idx == i)) ]; printf(' %d', local_min_count(i)); end printf('\n');