Example #1
0
        js_distances["JS2"].append(js2)
        print 'DNN output Jensen-Shannon distance (nJet = [6,7,8] vs. nJet = [4,5]): ' + str(
            js1)
        print 'DNN output Jensen-Shannon distance (nJet >= 9 vs. nJet = [6,7,8]): ' + str(
            js2)

        ### Save losses and plot
        l = DRf.evaluate(test_x, [test_y, nJets_binned_test], batch_size=512)
        losses["L_f - L_r"].append(l[0][None][0])
        losses["L_f"].append(l[1][None][0])
        losses["L_r"].append(-l[2][None][0])
        print("Loss: " + str(losses["L_r"][-1] / lam))

        plot_losses(i, losses, lam, num_epochs,
                    'Losses_adversarial_' + model_name + '_lambda_' + str(lam))
        plot_jensenshannon(i, js_distances, lam, num_epochs,
                           'JS_distance_' + model_name + '_lambda_' + str(lam))
        plot_inefficiencies(
            i, inefficiencies_compressed, inefficiencies_uncompressed, lam,
            num_epochs, 'Inefficiencies_' + model_name + '_lambda' + str(lam))

        roc_aoc = 1 - round(roc_auc_score(test_y, model.predict(test_x)), 4)
        print 'ROC area over curve: ' + str(roc_aoc)

        # Save the metrics for the best models to a .csv file
        if (js1 <= 0.08 and js2 <= 0.08 and sig_uncompressed_ineff <= 0.7
                and sig_compressed_ineff <= 0.8
                and bkg_uncompressed_ineff <= 0.1):
            metrics_path = save_path + model_name + '_best_metrics.txt'
            metrics_to_csv(metrics_path, i + 1, js1, js2,
                           sig_uncompressed_ineff, sig_compressed_ineff,
                           bkg_uncompressed_ineff, roc_aoc)
    #///////////////////////#

    ### Save losses and plot
    l = DRf.evaluate(test_x, [test_y, nJets_binned_test])
    losses["L_f - L_r"].append(l[0][None][0])
    losses["L_f"].append(l[1][None][0])
    losses["L_r"].append(-l[2][None][0])
    print("Loss L_r: " + str(losses["L_r"][-1] / lam))
    print("Loss L_f: " + str(losses["L_f"][-1]))

    print(" ")

    if (i == num_epochs - 1):
        plot_losses(i, losses, lam, num_epochs,
                    'Losses_adversarial_reduced_bkg_lambda' + str(lam))
        plot_jensenshannon(i, js_distances, lam, num_epochs,
                           'JS_distance_reduced_bkg_lambda' + str(lam))
        plot_Inefficiencies(i, inefficiencies_Compressed,
                            inefficiencies_Uncompressed, lam, num_epochs,
                            'Inefficiencies_reduced_bkg_lambda' + str(lam))

    save_name = 'susyDNN_adv_model_reduced_bkg_lambda_' + str(lam) + "_" + str(
        i)
    model.save(save_path2 + save_name + '.h5')

print '- - - - - - -'
print ' - second test set roc auc: ', round(
    roc_auc_score(test_y, model.predict(test_x)), 4)

# Check decorrelation for test set
bkg_test_x = test_x[test_y == 0].copy()
bkg_test_njet_4to5 = bkg_test_x['nJets30Clean'] < 0.1