Пример #1
0
def h5d_auc_table(h5d_fl1, h5d_fl2, kfolds, params_od, mix, is_ttbl, strata, trec):
    """Area Under the Curve(AUC) paired with table of parameters

        # # #  Make proper Definition here # # #

    """

    # Beginning AUC-Params table building.
    res_lst = list()

    #  Loading data in a convenient form.
    for params_lst, params_path in zip(
        param_comb.ParamGridIter(params_od, 'list'),
            param_comb.ParamGridIter(params_od, 'path')):

        # Defining list for AUC values storage. For this loop.
        auc_values = list()

        if params_lst[0] > params_lst[1]:

            if mix:

                pred_scores, expd_y, pred_y = get_predictions_mix(
                    h5d_fl1, h5d_fl2, kfolds, params_path, params_lst[2],
                    genre_tag=None, binary=is_ttbl, strata=strata
                )

            else:

                pred_scores, expd_y, pred_y = get_predictions(
                    h5d_fl1, kfolds, params_path, genre_tag=None, binary=is_ttbl, strata=strata
                )

            if is_ttbl:

                # NOTE:Option is_truth_tbl is critical to be selected correctly depending...
                # ...on the input.
                prec, recl, t = mx.pr_curve(
                    expd_y, pred_scores, full_curve=True, is_truth_tbl=is_ttbl
                )

                # Interpolated at 11-Recall-Levels.
                prec, recl = mx.reclev11_max(prec, recl, trec=trec)

                try:
                    auc_values.append(mx.auc(recl, prec))
                except:
                    print "Warning:", params_path, "AUC is for these params has set to 0.0"
                    auc_values.append(0.0)

            else:

                # Finding unique genres.
                gnr_tgs = np.unique(expd_y)

                # Calculating AUC per genre tag.
                for gnr in gnr_tgs:

                    # Converting expected Y to binary format.
                    expd_y_bin = np.where((expd_y == gnr), 1, 0)

                    # NOTE:Option is_truth_tbl is critical to be selected correctly depending...
                    # ...on the input.
                    prec, recl, t = mx.pr_curve(
                        expd_y_bin, pred_scores, full_curve=True, is_truth_tbl=is_ttbl
                    )

                    # Interpolated at 11-Recall-Levels.
                    prec, recl = mx.reclev11_max(prec, recl, trec=trec)

                    try:
                        auc_values.append(auc(recl, prec))
                    except:
                        print "Warning:", params_path, "AUC is for these params has setted to 0.0"
                        auc_values.append(0.0)

            # Extending parameters list with AUC(s).
            params_lst.extend(auc_values)

            # Appending the parameters list together with their respective AUC(s).
            res_lst.append(params_lst)

    # Stacking and returning the data collected in a 2D array. Last column contain the AUC for...
    # ...every parameters values possible combination.

    return np.vstack(res_lst)
Пример #2
0
fg1 = plt.figure(num=1, figsize=(12, 8), dpi=80, facecolor='w', edgecolor='k')
ax1 = fg1.add_subplot(111)
#fg2 = plt.figure(num=2, figsize=(30, 8), dpi=80, facecolor='w', edgecolor='k')
#ax2 = fg2.add_subplot(111)

i = 0
bar_width = 0.15

for params_lst, params_path in \
    zip(param_comb.ParamGridIter(params_od, 'list'),
        param_comb.ParamGridIter(params_od, 'path')):

    if params_lst[0] > params_lst[1]:

        pred_scores, expd_y, pred_y = get_predictions(
        h5d_fl1, kfolds, params_path, genre_tag=None, binary=True, strata=None
            #(10, 1000)
        )

        """

        pred_scores, expd_y, pred_y = get_predictions_mix(
            h5d_fl1, h5d_fl2, kfolds, params_path, params_lst[2],
            genre_tag=None, binary=True, strata=None
            #(10, 1000)
        )

        """

        #pred_scores, expd_y, pred_y = get_ocsvme(res_h5file, kfolds, params_path, genre_tag=None)

        #y, x, t = roc_curve(expd_y, pred_scores, full_curve=False)