def plot_aic_bic_fig(tasks):
"""
Creates AIC-BIC plot, as a 2-row x 3-col grid of point plots with 95% confidence intervals.
Parameters
----------
tasks: list(dict)
Returns
-------
Matplotlib Figure object
"""
sns.set(context='talk', style='whitegrid')
# Filter list of dicts to reduce the size of Pandas DataFrame
df = pd.DataFrame(filter_dict_list_by_keys(tasks, ['k', 'covar_type', 'covar_tied', 'bic', 'aic']))
df['covar_type'] = [x.capitalize() for x in df['covar_type']]
df['covar_tied'] = [['Untied', 'Tied'][x] for x in df['covar_tied']]
df['aic'] = df['aic'].astype('float')
df['bic'] = df['bic'].astype('float')
df = pd.melt(df, id_vars=['k', 'covar_type', 'covar_tied'], value_vars=['aic', 'bic'], var_name='metric')
f = sns.factorplot(x='k', y='value', col='covar_type', row='covar_tied', hue='metric', data=df,
row_order=['Tied', 'Untied'], col_order=['Full', 'Diag', 'Spher'], legend=True, legend_out=True,
ci=95, n_boot=100)
f.set_titles("{col_name}-{row_name}")
f.set_xlabels("Num. of Clusters (K)")
return f.fig
评论列表
文章目录