Beispiel #1
0
def make_score(df_list, output):
    """
    Make global plot long short profit.
    :param df_list: list of pd dfs
    :param output: output path
    :return: None
    """
    logger.info("in score plots")
    for item in df_list:
        df = item[0]
        df_name = item[1]
        if pc['prediction'] in df_name:
            score_ens_df = pd.DataFrame(columns=['model', 'r2', 'mse'])
            score_single_df = pd.DataFrame(columns=['model', 'r2', 'mse'])
            for i in df.columns.to_list():
                if pc['prediction'] in i:
                    scr_r2 = r2_score(df[mc["label"]], df[i])
                    scr_mse = mean_squared_error(df[mc["label"]], df[i])
                    score_single_df = score_single_df.append(
                        {'model': i,
                         'r2': scr_r2,
                         'mse': scr_mse},
                        ignore_index=True
                    )
                if 'ens' in i:
                    ens_scr_r2 = r2_score(df[mc["label"]], df[i])
                    ens_scr_mse = mean_squared_error(df[mc["label"]], df[i])
                    score_ens_df = score_ens_df.append(
                        {'model': i,
                         'r2': ens_scr_r2,
                         'mse': ens_scr_mse},
                        ignore_index=True
                    )
            logger.info("df name: {}, single score df shape: {} ".format(df_name, score_single_df.shape))
            logger.info("df name: {}, ens score df shape: {} ".format(df_name, score_ens_df.shape))
            # single_name = str(df_name) + "_single"
            # ens_name = str(df_name) + "_ens"
            # score_ens_df = score_ens_df.sort_values(by=['r2'], ascending=False)
            # score_single_df = score_single_df.sort_values(by=['r2'], ascending=False)
            # plotter_sng = Plotter(score_single_df, single_name, output)
            # plotter_sng.plot_score_table()
            # plotter_ens = Plotter(score_ens_df, ens_name, output)
            # plotter_ens.plot_ens_score_table()
            plotter_sng = Plotter(score_single_df.sort_values(by=['r2'], ascending=False),
                                  str(df_name) + "_single",
                                  output)
            plotter_sng.plot_score_table()
            plotter_ens = Plotter(score_ens_df.sort_values(by=['r2'], ascending=False),
                                  str(df_name) + "_ens",
                                  output)
            plotter_ens.plot_ens_score_table()