def get_plot_lt_data(model, lt): data_set_names = util.OrderedSet(sorted(zip(*data_lt_dict.keys())[0])) noise_levels = util.OrderedSet(sorted(zip(*data_lt_dict.keys())[1])) data = list() for noise_level in noise_levels: across_dset_data = list() for data_set_name in data_set_names: stat, sterr = data_lt_dict[ ( data_set_name, noise_level, model, lt ) ] across_dset_data.append(stat) mean, sterr = summarize_mean_serr(across_dset_data) data.append( ( noise_level, mean, sterr ) ) return data
def plot_noise_results_across_data_sets\ (data_dict, model, stat_name='F1', ax=None): """ :param data_dict: :param model: :param stat_name: :param title_data_name: :param ax: :return: """ data_set_names = util.OrderedSet(sorted(zip(*data_dict.keys())[0])) noise_levels = util.OrderedSet(sorted(zip(*data_dict.keys())[1])) def get_plot_data(model, lt): data = list() for noise_level in noise_levels: across_dset_data = list() for data_set_name in data_set_names: stat, sterr = data_dict[ ( data_set_name, noise_level, model, lt ) ] across_dset_data.append(stat) mean, sterr = summarize_mean_serr(across_dset_data) data.append( ( noise_level, mean, sterr ) ) return data data_lt = get_plot_data(model, 'LT') data_nolt = get_plot_data(model, 'noLT') if ax is None: fig = plt.figure() ax = fig.gca() x, y, yerr = zip(*data_lt) x = precision_to_sigma(x) ax.errorbar(x, y, yerr=yerr, color='coral', fmt='--o', label='LT') x, y, yerr = zip(*data_nolt) x = precision_to_sigma(x) ax.errorbar(x, y, yerr=yerr, color='darkcyan', fmt='--o', label='noLT') # 'darkcyan', 'darkturquoise', 'indianred' ax.grid(True) # set_xticks_precision_to_sigma_ticks(x, ax) ax.set_xlabel(r'IID Normal noise: $\sigma$') ax.set_ylabel(stat_name) model_name = model.split('_')[0].swapcase() title = 'Model {0}'.format(model_name) ax.set_title(title, fontsize=10) ax.legend(loc='lower left')
def dict_to_prettytable(d, decimal_precision=3): dfmtr = '{{0:.{0}f}}'.format(decimal_precision) for data_set_name, lt_dict in d.iteritems(): for data_set_LT, lt_num_dict in lt_dict.iteritems(): header = [ 'Iteration' ] \ + [ '{0}'.format(key) for key in lt_num_dict.keys() ] table = prettytable.PrettyTable(header) iteration_keys = util.OrderedSet() for value_dict in lt_num_dict.itervalues(): for iter_key in value_dict.iterkeys(): iteration_keys.add(iter_key) for iter_key in iteration_keys: row = [iter_key] for value_dict in lt_num_dict.itervalues(): if iter_key in value_dict: value = value_dict[iter_key] try: value = float(value) value = dfmtr.format(value) except ValueError: pass else: value = 'Null' row.append(value) # print row table.add_row(row) print '\n{0} {1}:'.format(data_set_name, data_set_LT) print table
def plot_lt_nolt_differences(data_dict, stat_name, data_set_name): # data_set_names = util.OrderedSet(sorted(zip(*data_dict.keys())[0])) noise_levels = util.OrderedSet(sorted(zip(*data_dict.keys())[1])) def get_plot_data(model): data = list() for noise_level in noise_levels: stat_LT, sterr = data_dict[ ( data_set_name, noise_level, model, 'LT' ) ] stat_noLT, sterr = data_dict[ ( data_set_name, noise_level, model, 'noLT' ) ] diff = stat_LT - stat_noLT data.append( ( noise_level, diff ) ) return data data_hmm = get_plot_data('hmm_hdp_w0') data_hsmm = get_plot_data('hsmm_hdp_w0') fig = plt.figure() ax = fig.gca() x, y = zip(*data_hmm) ax.plot(x, y, label='hmm') x, y = zip(*data_hsmm) ax.plot(x, y, label='hsmm') ax.set_title('Data set: {0}'.format(data_set_name)) ax.set_xlabel('precision') ax.set_ylabel('{0} difference: LT - noLT'.format(stat_name)) ax.legend(loc='lower right')
def plot_noise_results_in_ax\ (ax, data_dict, model, stat_name='F1', data_set_name=None, title_data_name=False): noise_levels = util.OrderedSet(sorted(zip(*data_dict.keys())[1])) def get_plot_data(model, lt): data = list() for noise_level in noise_levels: stat, sterr = data_dict[ ( data_set_name, noise_level, model, lt ) ] data.append( ( noise_level, stat, sterr ) ) return data data_lt = get_plot_data(model, 'LT') data_nolt = get_plot_data(model, 'noLT') x, y, yerr = zip(*data_lt) ax.errorbar(x, y, yerr=yerr, fmt='-o', label='LT') x, y, yerr = zip(*data_nolt) ax.errorbar(x, y, yerr=yerr, fmt='-o', label='noLT') ax.set_xlabel('Precision') ax.set_ylabel(stat_name) if title_data_name: title = 'Data set \'{0}\', model \'{1}\''.format(data_set_name, model) else: title = 'Model \'{0}\''.format(model) ax.set_title(title) ax.legend(loc='lower right')
def plot_lt_nolt_diff_across_data_sets(data_dict, stat_name, ax=None): data_set_names = util.OrderedSet(sorted(zip(*data_dict.keys())[0])) noise_levels = util.OrderedSet(sorted(zip(*data_dict.keys())[1])) def get_plot_data(model): data = list() for noise_level in noise_levels: diffs = list() for data_set_name in data_set_names: stat_LT, sterr = data_dict[ ( data_set_name, noise_level, model, 'LT' ) ] stat_noLT, sterr = data_dict[ ( data_set_name, noise_level, model, 'noLT' ) ] diff = stat_LT - stat_noLT diffs.append(diff) mean_diffs, sterr_diffs = summarize_mean_serr(diffs) data.append( ( noise_level, mean_diffs, sterr_diffs ) ) return data data_hmm = get_plot_data('hmm_hdp_w0') data_hsmm = get_plot_data('hsmm_hdp_w0') if ax is None: fig = plt.figure() ax = fig.gca() x, y, yerr = zip(*data_hmm) x = precision_to_sigma(x) ax.errorbar(x, y, yerr=yerr, color='blue', fmt='--o', label='HMM') x, y, yerr = zip(*data_hsmm) x = precision_to_sigma(x) ax.errorbar(x, y, yerr=yerr, color='indianred', fmt='--o', label='HSMM') # 'orange' ax.grid(True) ax.set_xlim((0.2, 1.5)) # max(x) # set_xticks_precision_to_sigma_ticks(x, ax) ax.set_title('LT - noLT {0} Differences'.format(stat_name), fontsize=10) ax.set_xlabel(r'IID Normal noise: $\sigma$') ax.set_ylabel('{0} difference: LT - noLT'.format(stat_name)) ax.legend(loc='upper right') return ax
def plot_all_noise_results_across_data_sets_nodiff(data_dict, stat_name='F1'): mydpi = 96 fig, axs = plt.subplots(nrows=1, ncols=2, sharex=True, figsize=(1300/mydpi, 500/mydpi), dpi=mydpi) data_set_names = util.OrderedSet(sorted(zip(*data_dict.keys())[0])) fig.suptitle('Comparison of LT vs noLT across emission noise levels (as precision), ' + '{0} figures sets at each noise level'.format(len(data_set_names)), y=1.0) plot_noise_results_across_data_sets\ (data_dict, 'hmm_hdp_w0', stat_name=stat_name, ax=axs[0]) plot_noise_results_across_data_sets\ (data_dict, 'hsmm_hdp_w0', stat_name=stat_name, ax=axs[1]) #plot_lt_nolt_diff_across_data_sets\ # (data_dict, stat_name, ax=axs[2]) fig.subplots_adjust(wspace=0.4) plt.savefig('figures/F1_LTvsnoLT_over_noise_no_diff.pdf', format='pdf')
def plot_all_noise_results_across_data_sets_with_fhmm\ (data_lt_dict, data_factorial_dict, stat_name='F1', show_diff=True, show_p=True, save_p=False): if show_diff: nsubplots = 3 else: nsubplots = 2 mydpi = 96 fig, axs = plt.subplots(nrows=1, ncols=nsubplots, sharex=True, figsize=(1300/mydpi, 500/mydpi), dpi=mydpi) data_set_names = util.OrderedSet(sorted(zip(*data_lt_dict.keys())[0])) fig.suptitle('Comparison of LT vs noLT across emission noise levels (as precision), ' + '{0} figures sets at each noise level'.format(len(data_set_names)), y=1.0) plot_lt_nolt_fhmm_results\ (data_lt_dict, data_factorial_dict, 'hmm_hdp_w0', factorial_type='hmm', stat_name=stat_name, ax=axs[0]) plot_lt_nolt_fhmm_results\ (data_lt_dict, data_factorial_dict, 'hsmm_hdp_w0', factorial_type='hsmm', stat_name=stat_name, ax=axs[1]) if show_diff: plot_lt_nolt_diff_across_data_sets\ (data_lt_dict, stat_name, ax=axs[2]) fig.subplots_adjust(wspace=0.4) if save_p: plt.savefig('figures/F1_LT-noLT-Factorial_over_noise.pdf', format='pdf') if show_p: plt.show()