Newer
Older
R_phipi / BDT.ipynb
@Davide Lancierini Davide Lancierini on 22 Oct 2018 200 KB NN and XGBoost BTDs
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "import matplotlib.pyplot as plt\n",
    "import os\n",
    "import pickle\n",
    "import math\n",
    "\n",
    "from sklearn.metrics import accuracy_score, roc_auc_score\n",
    "trunc_normal= tf.truncated_normal_initializer(stddev=1)\n",
    "normal = tf.random_normal_initializer(stddev=1)\n",
    "\n",
    "from xgboost import XGBClassifier\n",
    "from architectures.data_processing import *\n",
    "from architectures.utils.toolbox import *\n",
    "from architectures.DNN import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# IMPORTING THE DATASET"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "l_index=1\n",
    "mother_ID=[\"Ds\",\"Dplus\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Bkg data amounts to 13821 while signal MC amounts to 5881 Ds and 9639 Dplus samples\n"
     ]
    }
   ],
   "source": [
    "MC_Dplus_sig_dict, MC_Ds_sig_dict, data_bkg_dict = load_datasets(l_index)\n",
    "\n",
    "m_plus=MC_Dplus_sig_dict[\"Dplus_ConsD_M\"].shape[0]\n",
    "m_s=MC_Ds_sig_dict[\"Ds_ConsD_M\"].shape[0]\n",
    "n=data_bkg_dict[\"Ds_ConsD_M\"].shape[0]\n",
    "\n",
    "print('Bkg data amounts to {0} while signal MC amounts to {1} Ds and {2} Dplus samples'.format(n,m_s,m_plus))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Normalising the Chi2 vertex fits to the NDoF\n",
    "\n",
    "MC_Ds_sig_dict[\"Ds_ENDVERTEX_CHI2\"]=MC_Ds_sig_dict[\"Ds_ENDVERTEX_CHI2\"]/MC_Ds_sig_dict[\"Ds_ENDVERTEX_NDOF\"]\n",
    "MC_Ds_sig_dict[\"Ds_OWNPV_CHI2\"]=MC_Ds_sig_dict[\"Ds_OWNPV_CHI2\"]/MC_Ds_sig_dict[\"Ds_OWNPV_NDOF\"]\n",
    "MC_Ds_sig_dict[\"Ds_IPCHI2_OWNPV\"]=MC_Ds_sig_dict[\"Ds_IPCHI2_OWNPV\"]/MC_Ds_sig_dict[\"Ds_ENDVERTEX_NDOF\"]\n",
    "\n",
    "del MC_Ds_sig_dict[\"Ds_OWNPV_NDOF\"]\n",
    "del MC_Ds_sig_dict[\"Ds_ENDVERTEX_NDOF\"]\n",
    "#del MC_sig_dict[\"Ds_M\"]\n",
    "\n",
    "MC_Dplus_sig_dict[\"Dplus_ENDVERTEX_CHI2\"]=MC_Dplus_sig_dict[\"Dplus_ENDVERTEX_CHI2\"]/MC_Dplus_sig_dict[\"Dplus_ENDVERTEX_NDOF\"]\n",
    "MC_Dplus_sig_dict[\"Dplus_OWNPV_CHI2\"]=MC_Dplus_sig_dict[\"Dplus_OWNPV_CHI2\"]/MC_Dplus_sig_dict[\"Dplus_OWNPV_NDOF\"]\n",
    "MC_Dplus_sig_dict[\"Dplus_IPCHI2_OWNPV\"]=MC_Dplus_sig_dict[\"Dplus_IPCHI2_OWNPV\"]/MC_Dplus_sig_dict[\"Dplus_ENDVERTEX_NDOF\"]\n",
    "\n",
    "del MC_Dplus_sig_dict[\"Dplus_OWNPV_NDOF\"]\n",
    "del MC_Dplus_sig_dict[\"Dplus_ENDVERTEX_NDOF\"]\n",
    "\n",
    "data_bkg_dict[\"Ds_ENDVERTEX_CHI2\"]=data_bkg_dict[\"Ds_ENDVERTEX_CHI2\"]/data_bkg_dict[\"Ds_ENDVERTEX_NDOF\"]\n",
    "data_bkg_dict[\"Ds_OWNPV_CHI2\"]=data_bkg_dict[\"Ds_OWNPV_CHI2\"]/data_bkg_dict[\"Ds_OWNPV_NDOF\"]\n",
    "data_bkg_dict[\"Ds_IPCHI2_OWNPV\"]=data_bkg_dict[\"Ds_IPCHI2_OWNPV\"]/data_bkg_dict[\"Ds_ENDVERTEX_NDOF\"]\n",
    "\n",
    "del data_bkg_dict[\"Ds_OWNPV_NDOF\"]\n",
    "del data_bkg_dict[\"Ds_ENDVERTEX_NDOF\"]\n",
    "\n",
    "data_bkg_dict[\"phi_ENDVERTEX_CHI2\"]=data_bkg_dict[\"phi_ENDVERTEX_CHI2\"]/data_bkg_dict[\"phi_ENDVERTEX_NDOF\"]\n",
    "#data_bkg_dict[\"phi_OWNPV_CHI2\"]=data_bkg_dict[\"phi_OWNPV_CHI2\"]/data_bkg_dict[\"phi_OWNPV_NDOF\"]\n",
    "data_bkg_dict[\"phi_IPCHI2_OWNPV\"]=data_bkg_dict[\"phi_IPCHI2_OWNPV\"]/data_bkg_dict[\"phi_ENDVERTEX_NDOF\"]\n",
    "\n",
    "#del data_bkg_dict[\"phi_OWNPV_NDOF\"]\n",
    "del data_bkg_dict[\"phi_ENDVERTEX_NDOF\"]\n",
    "del MC_Ds_sig_dict[\"phi_M\"]\n",
    "del MC_Dplus_sig_dict[\"phi_M\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def return_branches(mother_index=None):\n",
    "\n",
    "    branches_needed = [\n",
    "                    #________________________________________\n",
    "                    #D\n",
    "                    #________________________________________\n",
    "                    #D Geometric variables, pT and FD\n",
    "        \n",
    "                    mother_ID[mother_index]+\"_ENDVERTEX_CHI2\",\n",
    "                    mother_ID[mother_index]+\"_IPCHI2_OWNPV\",\n",
    "\n",
    "                    mother_ID[mother_index]+\"_OWNPV_CHI2\",\n",
    "                    mother_ID[mother_index]+\"_IP_OWNPV\",\n",
    "                    mother_ID[mother_index]+\"_DIRA_OWNPV\",\n",
    "        \n",
    "                    mother_ID[mother_index]+\"_PT\",\n",
    "                    mother_ID[mother_index]+\"_FD_OWNPV\",\n",
    "                    \n",
    "                    #________________________________________\n",
    "                    #PHI\n",
    "                    #________________________________________\n",
    "                    #phi geometric variables, pT and FD\n",
    "        \n",
    "                    \"phi_ENDVERTEX_CHI2\",\n",
    "                    \"phi_IPCHI2_OWNPV\",\n",
    "                    \n",
    "                    \"phi_PT\",\n",
    "        \n",
    "                    #phi Reconstructed mass\n",
    "        \n",
    "                    #\"phi_M\",\n",
    "        \n",
    "                    #________________________________________\n",
    "                    #PION\n",
    "                    #________________________________________\n",
    "                    #pi Geometric variables and pT\n",
    "                    'pi_PT',\n",
    "        \n",
    "                    #________________________________________\n",
    "                    #LEPTONS\n",
    "                    #________________________________________\n",
    "                    #leptons Geometric variables and pT\n",
    "        \n",
    "                    l_flv[l_index]+\"_plus_PT\",\n",
    "                    l_flv[l_index]+\"_minus_PT\",\n",
    "        \n",
    "        \n",
    "                    #D Reconstructed mass\n",
    "                    mother_ID[mother_index]+\"_ConsD_M\",\n",
    "                  ] \n",
    "    return branches_needed"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Number of input features\n",
    "\n",
    "dim=len(return_branches(mother_index=0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Convert data dictionaries to arrays for NN\n",
    "\n",
    "MC_Ds_sig = extract_array(MC_Ds_sig_dict, return_branches(mother_index=0), dim, m_s)\n",
    "MC_Dplus_sig = extract_array(MC_Dplus_sig_dict, return_branches(mother_index=1), dim, m_plus)\n",
    "data_bkg = extract_array(data_bkg_dict, return_branches(mother_index=0), dim, n)\n",
    "\n",
    "plt.hist(MC_Ds_sig[:,dim-1],alpha=0.5,bins=30);\n",
    "plt.hist(MC_Dplus_sig[:,dim-1],alpha=0.5,bins=30);\n",
    "plt.hist(data_bkg[:,dim-1],alpha=0.5,bins=200);\n",
    "fig=plt.gcf()\n",
    "fig.set_size_inches(16,8)\n",
    "plt.savefig('/home/hep/davide/Rphipi/mu/bdt_train.png', format='png', dpi=100)\n",
    "#Cut on Ds Mass\n",
    "\n",
    "#data_bkg_cut=data_bkg[np.where(data_bkg[:,dim-1]>1915)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Add 0/1 label for bkg/sig\n",
    "\n",
    "MC_Dplus_sig_labelled=add_labels(MC_Dplus_sig,signal=True)\n",
    "MC_Ds_sig_labelled=add_labels(MC_Ds_sig,signal=True)\n",
    "data_bkg_labelled=add_labels(data_bkg,signal=False)\n",
    "\n",
    "#Merge MC sig and data bkg, shuffle it\n",
    "\n",
    "data=np.concatenate((data_bkg_labelled,MC_Ds_sig_labelled), axis =0)\n",
    "data=np.concatenate((data,MC_Dplus_sig_labelled), axis =0)\n",
    "np.random.seed(1)\n",
    "np.random.shuffle(data)\n",
    "\n",
    "#get train size\n",
    "train_size=data.shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Strip away the label column and convert it to a one-hot encoding\n",
    "\n",
    "X=data[:,0:dim]\n",
    "Y_labels=data[:,dim].astype(int)\n",
    "Y_labels=Y_labels.reshape(train_size,1)\n",
    "Y_labels_hot = to_one_hot(Y_labels)\n",
    "Y_labels=Y_labels_hot\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Divide the dataset k \"equi populated\" sets\n",
    "test=0\n",
    "k=5 #number of subsets\n",
    "i=4 #number of subset that is train set\n",
    "PATH=l_flv[l_index]+'/test_'+str(test)\n",
    "\n",
    "if not os.path.exists(PATH):\n",
    "    os.mkdir(PATH)\n",
    "X_train, Y_train, X_test, Y_test, X_dict, Y_dict = k_subsets(i, k, X, Y_labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_mean=X_train.mean(axis=0)\n",
    "X_train_1=X_train-X_mean\n",
    "X_std=X_train_1.std(axis=0)\n",
    "X_train_2=X_train_1/X_std\n",
    "\n",
    "\n",
    "\n",
    "X_mean=X_test.mean(axis=0)\n",
    "X_test_1=X_test-X_mean\n",
    "X_std=X_test_1.std(axis=0)\n",
    "X_test_2=X_test_1/X_std\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(23472, 13)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_2.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# SETTING UP THE NETWORK"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "task='TRAIN'\n",
    "\n",
    "PATH=l_flv[l_index]+'/test_'+str(test)+'/NN_'+str(i)\n",
    "\n",
    "if not os.path.exists(PATH):\n",
    "    os.mkdir(PATH)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "LEARNING_RATE = 0.001\n",
    "BETA1 = 0.5\n",
    "BATCH_SIZE = 64\n",
    "EPOCHS = 50\n",
    "VAL_PERIOD = 10\n",
    "SEED=1\n",
    "LAMBD=0.1\n",
    "\n",
    "sizes = {\n",
    "'dense_layers': [\n",
    "                    #(16, 'bn', 0.8, lrelu, tf.glorot_uniform_initializer()),\n",
    "                    #(8, 'bn', 0.5, lrelu, tf.glorot_uniform_initializer()),\n",
    "                    #(16, 'bn', 1, tf.nn.relu, tf.random_normal_initializer()),\n",
    "                    (200, 'bn', 0.95, tf.nn.relu, tf.random_normal_initializer()),\n",
    "                    (200, 'bn', 0.95, tf.nn.relu, tf.random_normal_initializer()),\n",
    "                    #(200, 'bn', 0.90, tf.nn.relu, tf.glorot_uniform_initializer()),\n",
    "                    (100, 'bn', 0.95, tf.nn.relu, tf.random_normal_initializer()),\n",
    "                ],\n",
    "'n_classes':2,\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Input for propagation (?, 13)\n",
      "Logits shape (?, 2)\n",
      "Input for propagation (?, 13)\n",
      "Logits shape (?, 2)\n",
      "\n",
      " Training...\n",
      "\n",
      " ****** \n",
      "\n",
      "Training DNN for 50 epochs with a total of 23472 samples\n",
      "distributed in 366 batches of size 64\n",
      "\n",
      "The learning rate set is 0.001\n",
      "\n",
      " ****** \n",
      "\n",
      "Evaluating performance on validation/train sets\n",
      "At iteration 0, train cost: 2386, train accuracy 0.7044, test accuracy 0.7658\n",
      "Average of signal as predicted by NN 0.5681\n",
      "Evaluating performance on validation/train sets\n",
      "At iteration 10, train cost: 496.4, train accuracy 0.8168, test accuracy 0.7865\n",
      "Average of signal as predicted by NN 0.6337\n",
      "Evaluating performance on validation/train sets\n",
      "At iteration 20, train cost: 260.4, train accuracy 0.8138, test accuracy 0.79\n",
      "Average of signal as predicted by NN 0.5725\n",
      "Evaluating performance on validation/train sets\n",
      "At iteration 30, train cost: 176.6, train accuracy 0.8099, test accuracy 0.7758\n",
      "Average of signal as predicted by NN 0.5691\n",
      "Evaluating performance on validation/train sets\n",
      "At iteration 40, train cost: 133.6, train accuracy 0.8081, test accuracy 0.7934\n",
      "Average of signal as predicted by NN 0.6041\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Parameters trained\n",
      "Model and hyperparameters saved in path: mu/test_0/NN_4/NN_model.ckpt\n"
     ]
    }
   ],
   "source": [
    "tf.reset_default_graph()\n",
    "model_NN = DNN(dim-1, sizes,\n",
    "              lr=LEARNING_RATE, beta1=BETA1, lambd=LAMBD,\n",
    "              batch_size=BATCH_SIZE, epochs=EPOCHS,\n",
    "              save_sample=VAL_PERIOD, path=PATH, seed=SEED)\n",
    "\n",
    "init_op = tf.global_variables_initializer()\n",
    "saver = tf.train.Saver()\n",
    "gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.13)\n",
    "\n",
    "with tf.Session(config=tf.ConfigProto(gpu_options=gpu_options)) as sess:\n",
    "    sess.run(init_op)\n",
    "    \n",
    "    print('\\n Training...')\n",
    "    model_NN.set_session(sess)\n",
    "    model_NN.fit(X_train_2, Y_train, X_test_2, Y_test)\n",
    "    \n",
    "    save_path = saver.save(sess, PATH+'/NN_model.ckpt')\n",
    "    hyper_dict={\n",
    "        'k':k,\n",
    "        'LEARNING_RATE':LEARNING_RATE,\n",
    "        'BETA1':BETA1,\n",
    "        'BATCH_SIZE':BATCH_SIZE,\n",
    "        'EPOCHS':EPOCHS,\n",
    "        'VAL_PERIOD':VAL_PERIOD,\n",
    "        'SEED':SEED,\n",
    "        'sizes':sizes,\n",
    "        'LAMBD':LAMBD,\n",
    "        'PATH':PATH,\n",
    "    }\n",
    "    with open(PATH+'/hyper_parameters.pkl', 'wb') as f:  \n",
    "        pickle.dump(hyper_dict, f)\n",
    "    with open(PATH+'/variables_used.pkl', 'wb') as f:  \n",
    "        pickle.dump(return_branches(mother_index=0), f)\n",
    "    print(\"Model and hyperparameters saved in path: %s\" % save_path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "task='TEST'\n",
    "\n",
    "with open(PATH+'/hyper_parameters.pkl', 'rb') as f:  \n",
    "    hyper_dict = pickle.load(f)\n",
    "    #for key, item in hyper_dict.items():\n",
    "    #    print(key+':'+str(item))\n",
    "\n",
    "k=hyper_dict[\"k\"]\n",
    "LEARNING_RATE=hyper_dict[\"LEARNING_RATE\"]\n",
    "BETA1=hyper_dict[\"BETA1\"]\n",
    "BATCH_SIZE=hyper_dict[\"BATCH_SIZE\"]\n",
    "EPOCHS=hyper_dict[\"EPOCHS\"]\n",
    "VAL_PERIOD=hyper_dict[\"VAL_PERIOD\"]\n",
    "SEED=hyper_dict[\"SEED\"]\n",
    "sizes=hyper_dict[\"sizes\"]\n",
    "LAMBD=hyper_dict[\"LAMBD\"]\n",
    "PATH=hyper_dict[\"PATH\"]\n",
    "    \n",
    "if not os.path.exists(PATH+'/hyper_parameters.pkl'):\n",
    "    print(\"No saved sizes dict\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      " Evaluate model on test set...\n",
      "INFO:tensorflow:Restoring parameters from mu/test_0/NN_4/NN_model.ckpt\n",
      "Model restored.\n",
      "Test accuracy: 0.7293\n"
     ]
    }
   ],
   "source": [
    "with tf.Session(config=tf.ConfigProto(gpu_options=gpu_options)) as sess:\n",
    "    \n",
    "    print('\\n Evaluate model on test set...')\n",
    "    saver.restore(sess,PATH+'/NN_model.ckpt')\n",
    "    print('Model restored.')\n",
    "    model_NN.set_session(sess)\n",
    "    model_NN.test(X_test_2,Y_test)\n",
    "    output_NN=model_NN.predict(X_test_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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zZmOl1UYCQaAVDp16qSZM2fqxIkTmjlzZrodkHTu96u79tprNWrUKI0dO1Y//fTTGeuvXr1atWvX9gdgSapTp46ioqLS1C1fvnyKVa6vuuoqSfKPlkrSypUr1aRJE5UoUUL58uVToUKF9Mcff2SqLUl++uknbd++XXfeeadOnTrlfzRq1EjHjx/3rw561113aePGjfruu+8kSQcOHNC///1v/x9aR48e1YoVK9Ls58Ybb1RISEiaa7GbNm3qf16iRAlFRkamOLdArrnmGh05ckTdunXTokWL/N9QA8ClpkaNGlq/fr3mzp2rBx98UM45/e///q9iY2P1xx9/pLvdmfqlJUuWqF27dsqTJ4//3+kKFSqofPnyaRaUTLJ06VLlyZNH7dq1S/Hve+PGjfXtt98qMTFRGzdu1O7duwPO/MlIZvuOVatWqUmTJv4ALKUMaeciJiYmRQBOOk7Tpk1TfNFQp04dlS9f3j+7LEnywFmkSBFFRETolltuUd68ef3lFStW1K5du866bStWrNCff/6pjh07pumb9+3bp507dyo8PFxly5ZVnz599N5772n//v1nfZwk1157rebPn6/Bgwdr1apVSkxMTPH+kiVLVLt2bVWoUMHfFsk3Uyy935ucQAhGjio/cF6aB3ChadOmjf744w8NGjRIf/75p1q3bp2mTokSJVSgQIGA05Ez45VXXtHtt9+uZ555RlWqVFGlSpU0ffr0dOvv3btXERERacoDlaUetU76xv748eOSfNOlmzZtKuecXn/9dX355ZdavXq1IiMj/XUyI+kWUC1btlRISIj/UaFCBUnSjh07JEn169dXuXLl/N/Uf/DBB8qXL59uv/12Sb7rgxMTE/Xggw+m2E+BAgV08uRJ/34yOr8ztbtKlSqaM2eOfvnlF7Vs2VIlS5ZU586dlZCQkOnzBRAk/jqa9nH6VG636qwUKFBArVu31iuvvKIff/xRb7zxhjZt2pRiHYbUztQvHThwQM8//3yKf6dDQkL0yy+/pPl3Ovk2iYmJKlq0aIptunfvrlOnTmnPnj3+KdtnO/01s33H3r17FRkZmWLbggUL6rLLLjur4yUX6AvoPXv2BCyPiopKc+lNoH7sXPq2QJL65quvvjrF53LrrbdK8vXNefLk0aJFixQdHa2ePXsqOjpaN910k/7zn/+c9fF69uyp4cOHa8aMGapbt66ioqL01FNP+cPwgQMHtHLlyjS/NxMnTkz39yYnMB0aAFIJCwtTq1atNGbMGHXs2FFhYWFp6oSEhKhBgwZauHChnn322bM+RrFixfTSSy/ppZde0vfff6+RI0eqS5cuqlGjhn/kNrno6Ght3LgxTfm5hLgFCxbo6NGjmjNnjv/cTp06ddbXxyZNZR4/fryuu+66NO8nhWEz05133qn33ntPw4cP13vvvacWLVr4F8IoVqyY/x7MgaYoly5d+qzalZ64uDjFxcXpyJEjmjdvnh599FE9/PDDGX75AACXgl69eik+Pl4bNmxIt86Z+qXw8HC1a9dO9957b5pt07uvfXh4uPLly6cvv/xSefKkHXuLjIz0X4e6Z8+eszqnzPYd0dHRaUY6jx07luGo+JkEmgVWqlSpgCOq+/btU+3atc/5WGcrqW/++OOPA4byKlWqSJKqVq2qDz74QCdPntTnn3+uAQMGKC4uTjt37gz43yo9efLkUb9+/dSvXz/t2LFDU6dO1aBBgxQTE6M+ffooPDxcsbGxGjduXJptCxQocI5nef4IwQAQwAMPPKATJ06oT58+6dZ59NFH1aZNG02ePNl/rVOS06dPa9GiRZlaOKtGjRoaNWqUpk6dqg0bNgQMwddff72mTp2qXbt2+adEr1q1KsWqk5l17Ngx5cmTR/ny/bcLmDFjhn+KUmZVqVJFMTEx2rp16xnvidypUye98MIL+vjjj7V8+fIU132FhYWpXr162rhxo55++umzO5kAzvTtedGiRdW5c2ctX75cK1asOO/jAcCFZP/+/WlGPhMSEnTkyJGAoSiQQP1S0nW2tWvXzvSlQI0aNVJiYqKOHDmiJk2aBKyT1JdMnjw54MwrKfC/65ntO66//nq99dZbOnr0qH9KdPK7CmSVunXraty4cfr999/9X/KuXr1aW7du1Y033pjlx5MCfy7169dXwYIFtXv37nQXs0ouJCREjRo1Uv/+/dW5c2cdPnxY4eHh5zQSXbZsWQ0cOFATJ07Ujz/+KMk39XvRokUqV65cmt/L5Och6ZxGvs8VIRgAAmjYsKEaNmyYYZ3WrVurf//+6tWrl7788ku1bdtWl112mTZs2KDXXntN5cuXTzcE33jjjWrXrp2qV68uM9OECRMUFhamOnXqBKzfo0cPPfvss2rVqpUGDx6sY8eOafDgwYqIiDirb2yl//5R0qNHD/Xq1Uvr1q3TCy+8kGYq1pnkyZNHo0eP1j333KPffvtNLVq0UP78+f2LbcycOdP/B0ft2rVVsWJF9e7dWwULFlSrVq1S7GvkyJFq3Lix8uTJozvuuEOFCxfW9u3bNW/ePA0bNkyVK1fOdLuqVq2qhQsXauHChSpRooQqVKigmTNnasWKFWrevLlKly6tTZs26f3338/0ImAAcLG45ppr1LZtWzVt2lSRkZHatm2bXnjhBRUqVCjNF7bJnalfGjJkiOrUqaO4uDj17NlTJUuW1K5du7R48WJ17949YJ9ZpUoV9ektbNEWAAAgAElEQVTTR506dVJ8fLxiY2N1/PhxrVu3Tj/99JPeeOMN5cmTxz/q3KVLF919990yM/373//W3XffrdjYWFWtWlX79u3TpEmTVL16dZUsWVLly5fPVN/x6KOP6tVXX1WrVq3Uv39/7d69WyNGjFDBggWz9HPv37+/xo0bp2bNmmnAgAH6448/NHDgQF1zzTXq0KFDlh4rSaD+rkSJEhoyZIj+9re/adu2bbr55pt1+vRp/fTTT1q2bJlmzZql77//Xo8//rjuuusuXXHFFfr111/1/PPPq2bNmv6R5PT2ndr999/vXzysaNGiWrZsmTZt2qTnn39ektS1a1e99tpratiwoR5//HFdccUVOnjwoFatWqXo6Gj169dP+fPnV4UKFTRjxgxVr15doaGhqlGjRrbee5kQDADnYfTo0brhhhv0yiuvqHPnzjp27JjKly+vNm3a6PHHH093u/r162vSpEnaunWr8ubNq+uuu06ffPKJypQpE7B+oUKFtGDBAj3wwAO66667/J1/fHx8hqt9BnLNNddo4sSJGjp0qGbNmqWaNWvq/fffT7EiaGbdddddKlKkiIYPH6633npLefPm1RVXXKFWrVql6bzuuusuDRs2TJ06dUqxQInk++Prs88+0+DBg3XPPfcoMTFRl19+uZo3b57pkYskTz75pH/Brt9++00TJ05UjRo1NHfuXPXv31+HDh1SqVKldN999+mZZ54563MGgAvZ008/rTlz5uiRRx7RoUOHFB0d7V9BOekylUDO1C9VrlxZK1eu1JNPPqnevXvr2LFj/pWYK1asmO5+X331VVWuXFkTJkzQ008/rSJFiuiqq65Sr169/HU6d+6s0NBQDRs2THfccYd/lDdp3Ys777xTy5YtU3x8vBISEtStWzdNmjQpU31HTEyM5s+fr0ceeUQdOnRQtWrV9M4776ht27ZZ8XH7RUREaNmyZXrsscd09913K3/+/GrZsqXGjBmTbWEuUH/XvXt3xcfHq3Tp0hozZoxGjx6t0NBQVa5c2d/PR0dHKyoqSsOGDdPu3btVrFgx3Xrrrf7gmtG+U6tfv74mTJig119/XcePH1fFihU1YcIE/7ofoaGhWrZsmZ5++mkNHjxY+/btU2RkpOrUqZNiBfDXXntNjz/+uG677TadOHFCW7Zs8d+bOTtYRvf1upTExsa63FyBDD6BFsLa+tyZp2rgwrZ+/XpVq1Ytt5sRdLZs2aLKlStr/PjxZ72qJjIno99tM/vGORebw026pNA340Kzfv16Vbvy8sBv5i8UuBxAjsqKvpmRYAC4SIwYMUKlS5fW5Zdfru3bt2vEiBGKiIjItmlWAAAAlyJCMABcJMxMQ4cO1e7du1WgQAHddNNNeuGFF856OjQAAEAwIwQDwEVi4MCBGjhwYG43AwAA4KJ2dkuKAgAAAABwESMEAwAAAACCBiEYQJYIlpXmETz4nQYA4NJECAZw3kJCQnTs2LHcbgaQpY4dO6aQkJDcbgYAAMhihGAA5y0yMlK7du3S0aNHGT3DRc85p6NHj2rXrl2KjIzM7eYAAIAsxurQAM5b0i16du/erZMnT+Zya4DzFxISoqioKG4/BQDAJYgQDCBLFClShMAAAACACx7ToQEAAIBLgJmd8fHpp59mybF+/PFHDRkyRH/88UeW7O9M5s+fr1deeSXT9bdu3arLLrtMO3bs8Jf98ssv6ty5s8qWLavQ0FCVK1dO7dq104oVK86rbdHR0Sk+48jISLVu3Vrr1q1LUa9Xr17q27fveR0LWYORYAAAACAje76TQkJz/rilrzur6snD3LFjx9SoUSM9+eSTiouL85dfddVVWdK0H3/8UUOHDlWfPn102WWXZck+MzJ//nwtWbJEDz30UKbqDx06VB07dlTZsmUlSQkJCapbt64qVKigUaNGKSoqSlu2bNHs2bP19ddfq379+ufVvu7du+v++++Xc067du3Ss88+q2bNmmn9+vUqXLiwJCk+Pl7XXnutBgwYoHLlyp3X8XB+CMEAAADAJaBevXr+50kjtFdeeWWK8mBw8OBBvfvuu1qyZIm/bPr06Tp8+LAWLlyo4sWLS5JuvfVW9ezZM8NFPRcsWKDbb79dx48fz/CYMTExKT7nK664QrVr19bq1avVqFEjSVKVKlVUu3Ztvf766xo2bNj5nCLOE9OhAQAAgCCzZcsWdezYUcWKFVNYWJji4uL0888/+993zumZZ57RFVdcodDQUEVHR6tly5Y6ePCgFixYoI4dO0qSSpUqJTNT1apV0z3Wd999pyZNmqh48eK67LLLdPXVV2vChAkp6sycOVO1atVSaGioSpcurUGDBikxMVGSNHDgQL366qvauHGjf8pxnz590j3etGnTFB4erhtvvNFfdvjwYRUsWFBFixZNU9/MMvehnYWk0d/UC4Z26NBBU6ZMyfLj4ewwEgwAAAAEkf3796tBgwaKiYnRG2+8ofz582vYsGFq2rSp1q9fr/z582vChAkaPXq0Ro4cqWrVqikhIUFLlizRsWPHVL9+fQ0fPlz/+Mc/NG/ePIWHh6tgwYIBj3X69GnFxcUpNjZW7777rvLnz6/169fryJEj/jpvv/22evTooYceekjPPfecNm7cqH/84x8yMz377LPq27evfv75Z61evVrTp0+XJEVFRaV7fkuXLlW9evVShNtatWrp999/V/fu3dW/f3/VrFkzS8Ovc06nTp2SJO3atUsDBw5UZGSkGjRokKLeDTfcoP79+2vjxo2qUqVKlh0fZ4cQDAAAAASRUaNG6fTp01qyZIl/ZLR+/fqqUKGCpkyZol69emnVqlVq1aqV7r//fv92HTp08D+vVKmSJF+4jI6OTvdYu3fv1q5du7Rs2TL/No0bN/a/n5iYqAEDBqh3797617/+JUlq2rSp8ubNq/j4eMXHx6ts2bKKiopSaGhopqZ2f/PNN+rWrVuKsri4OD344IMaO3aspkyZoiJFiqhp06bq27evGjZs6K/nnPOPQEu+EC/JH3Al38hx3rx5U+x/+PDhGj58uP91iRIlNHv27DTXS9esWVOStGrVKkJwLmI6NAAAABBElixZoubNmyssLEynTp3SqVOnVLx4cdWsWVNr1qyRJF177bWaPXu2nnnmGa1Zs8YfBs9WVFSUoqOjdd999+n9999XQkJCivfXrl2rvXv3qmPHjv62nDp1So0aNdKff/6p9evXn/Ux9+3bp5IlS6YpT5pS/fzzz+umm27SvHnz1KhRI02aNMlf5/XXX1dI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\n",
      "text/plain": [
       "<Figure size 1152x576 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "   \n",
    "plt.suptitle('S/B selection from NN', fontsize='15')\n",
    "Ds_mass_MC =[MC_Ds_sig_dict[\"Ds_ConsD_M\"][i][0]/1000 for i in range(m_s)]\n",
    "Dplus_mass_MC =[MC_Dplus_sig_dict[\"Dplus_ConsD_M\"][i][0]/1000 for i in range(m_plus)]\n",
    "NN_selected = X_dict[i][np.argmax(output_NN,1).astype(np.bool)]\n",
    "Ds_mass_sel_NN = NN_selected[:,dim-1]/1000\n",
    "Ds_mass_train_NN =X_dict[i][:,dim-1:dim]/1000\n",
    "\n",
    "plt.subplot(1,2,1)\n",
    "plt.hist(Ds_mass_MC+Dplus_mass_MC,bins=70, label='MC signal events');\n",
    "plt.legend(fontsize='15')\n",
    "plt.ylabel('# events', fontsize=15)\n",
    "plt.xlabel('Reconstructed D_s Mass (GeV)', fontsize=15)\n",
    "plt.subplot(1,2,2)\n",
    "\n",
    "plt.hist(Ds_mass_sel_NN,alpha=0.6,bins=70, label='S selected from test set');\n",
    "plt.hist(Ds_mass_train_NN,alpha=0.2,bins=70, label='Test set (S+B)');\n",
    "plt.legend(fontsize='15')\n",
    "plt.ylabel('# events', fontsize=15)\n",
    "plt.xlabel('Reconstructed D_s Mass (GeV)', fontsize=15)\n",
    "fig=plt.gcf();\n",
    "fig.set_size_inches(16,8)\n",
    "plt.savefig('/home/hep/davide/Rphipi/'+PATH+'/D_s_NN.png', format='png', dpi=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7UAAAHoCAYAAACW1sg1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xu4XVV5L/7vSwAB0YpclCNq1B94QAwpDQEELwEBraCIykUuorYgfSiK16C/Wqu0IGqxerAcDkirciDKUfEUrFIKXiqKQSICKXIxQqyXiEpRuQXG+WPvpGGTZK+dfVlr7nw+z5NnrzXnWHO+e+2ZZH/XGHOMaq0FAAAAumiDfhcAAAAA60qoBQAAoLOEWgAAADpLqAUAAKCzhFoAAAA6S6gFAACgs4RaAAAAOkuoBQAAoLOEWgAAADprw34XsK622mqrNnPmzH6XAQAAwCS49tprf9la23q0dp0NtTNnzszChQv7XQYAAACToKp+3Es7w48BAADoLKEWAACAzhJqAQAA6Kwpvae2qj6Z5MAkv2it7Ty87UNJDkryQJLbkry+tfabqawLAACYHh588MEsXbo09913X79LoUebbLJJtttuu2y00Ubr9PqpnijqH5L8jySfWmXb5UlOaa0tr6oPJjklybumuC4AAGAaWLp0aR73uMdl5syZqap+l8MoWmu56667snTp0jzjGc9Yp2NM6fDj1trXk/xqxLavttaWDz/9dpLtprImAABg+rjvvvuy5ZZbCrQdUVXZcsstx9WzPmj31L4hyZfXtLOqjquqhVW1cNmyZVNYFgAA0BUCbbeM9+c1MKG2qt6TZHmSC9bUprV2TmttTmttztZbj7oGLwAAANPcVN9Tu1pV9boMTSC1b2ut9bseAABgejjz8h9O6PFO3m+Hte6/6667su+++yZJfvazn2XGjBlZ0SF3zTXXZOONN57Qesbr9a9/febPn5/tt98+Z5xxRubPn58keeihh/KiF70o3/jGN/pc4ej6Hmqr6iUZmhjqha213/e7HgAAgHW15ZZbZtGiRUmS973vfdl8883z9re//RFtWmtprWWDDfo/cPb8889Pkixfvjynn376ylA7Y8aMTgTaZIqHH1fVhUmuTvLsqlpaVW/M0GzIj0tyeVUtqqqzp7ImAACAyXbrrbdm5513zpve9KbsuuuuufPOO/OEJzxh5f6LLroof/Inf5Ik+fnPf55DDjkkc+bMydy5c/Ptb3/7Ucc799xz88pXvjIHHHBAnv3sZ+fUU09due+MM87IzjvvnJ133jkf//jHkyT33HNPXvrSl2aXXXbJzjvvnIsvvjhJsvfee2fRokWZP39+7rnnnsyePTvHHHNMli9fvrK+V73qVfnqV7+68vhHHXVULrnkkixfvjxvfetbM3fu3MyaNSvnnntukuQnP/lJ9t5778yePTs777xzvvWtb03wu/lIU9pT21o7YjWbz5vKGgAAAPrhpptuyvnnn5+zzz47y5cvX2O7k046Ke985zuzxx57ZMmSJTnwwANzww03PKrdNddckxtuuCEbb7xxdttttxx44IF54IEHcsEFF+Saa67JQw89lLlz5+aFL3xhFi9enJkzZ+bLXx6al/fuu+9+xLFOP/30nHvuuSt7mVet7/DDD8+CBQuy//7757777svXvva1nHfeeTnnnHOyzTbb5Jprrsn999+fPfbYI/vvv38uvPDCHHTQQXnXu96Vhx56KPfee+9EvH1r1PfhxwAAAOuDZz3rWdltt91Gbfcv//Ivufnmm1c+//Wvf5177703m2666SPaHXDAAdliiy2SJAcffHC++c1v5v7778+rXvWqbLbZZo/YPm/evMyfPz/z58/PQQcdlL322qvnul/2spflbW97Wx588MFceuml2WefffKYxzwmX/3qV7N48eJcdNFFSYaC8i233JLddtstxx9/fO67774cfPDB2WWXXXo+17oQagEAAKbAYx/72JWPN9hgg6w6R+6q67S21nqaVGrkUjhVlTXNu7vjjjtm4cKFueyyy/KOd7wjBx54YN797nf3VPdmm22WvfbaK5dffnkWLFiQ17/+9Svr/MQnPrFyYqxVXXXVVbn00ktz5JFH5pRTTsmRRx7Z07nWRf/vTAYAAFjPbLDBBtliiy1yyy235OGHH84XvvCFlfte/OIX56yzzlr5fMWQ4JG++tWv5je/+U1+//vf55JLLslee+2VF7zgBfnCF76Qe++9N7/97W9zySWX5PnPf35+8pOfZPPNN8/RRx+dt771rfne9773iGNtuOFQf+eahkUffvjhOe+883L11VfnxS9+cZKhnuJPfOITK19z88035957782Pf/zjPPnJT85xxx2XY489Ntddd926v1E90FMLAABMW6MtwdNPH/zgB/OSl7wkT3va07LTTjvl/vvvT5KcddZZOeGEE3L++edn+fLlmTdv3iNC7gp77713Xvva1+a2227L0UcfndmzZydJjjjiiJXDnE844YQ897nPzWWXXZb58+dngw02yMYbb5yzz370/LxvfOMbM2vWrMyZMyef/OQnH7HvJS95SV73utflNa95TTbaaKMkyfHHH5877rhj5Xm32WabXHLJJbniiivyt3/7t9loo42y+eab5zOf+czEvWmrUV1dFnbOnDlt4cKF/S4DAAAYIIsXL86OO+7Y7zIm3bnnnpsbbrghH/3oR/tdyoRY3c+tqq5trc0Z7bWGHwMAANBZhh8DAAB0zIo1bRFqB8OVp/XWbt4pk1sHAABAxxh+DAAAQGcJtQAAAHSWUAsAAEBnuacWAACYvnqdv6ZXPcxzM2PGjDz3uc9d+fyLX/xiZs6cudq2S5YsyYEHHpgbbrhhoipcZwsXLsynPvWpfOxjH8tVV12VjTfeOM973vOSJGeffXY222yzHHPMMX2u8tGEWgAAgAm06aabZtGiRf0uY8zmzJmTOXOGloW96qqrsvnmm68MtW9605v6WdpaGX4MAAAwyZYsWZLnP//52XXXXbPrrrvmW9/61qPa3HjjjZk7d25mz56dWbNm5ZZbbkmSfOYzn1m5/fjjj89DDz30qNfOnDkz73rXuzJ37tzMnTs3t956a5Lkxz/+cfbdd9/MmjUr++67b+64444kyec+97nsvPPO2WWXXfKCF7wgyVCQPfDAA7NkyZKcffbZOfPMMzN79ux84xvfyPve9758+MMfzuLFizN37txHfF+zZs1Kklx77bV54QtfmD/6oz/KAQcckJ/+9KdJko997GPZaaedMmvWrBx++OET+K4OEWoBAAAm0L333pvZs2dn9uzZeeUrX5kk2WabbXL55Zfne9/7XhYsWJCTTjrpUa87++yz8+Y3vzmLFi3KwoULs91222Xx4sVZsGBB/u3f/i2LFi3KjBkzcsEFF6z2vI9//ONzzTXX5MQTT8xb3vKWJMmJJ56YY445Jtdff32OPPLIled9//vfn6985Sv5/ve/ny996UuPOM7MmTPzpje9KSeffHIWLVqU5z//+Sv37bjjjnnggQdy++23J0kWLFiQQw89NA8++GD+/M//PBdffHGuvfbavOENb8h73vOeJMnpp5+e6667Ltdff33OPvvscb67j2b4MQAAwARa3fDjBx98MCeeeOLKYPrDH/7wUa/bc88989d//ddZunRpDjnkkGy//fa54oorcu2112a33XZLMhSYt9lmm9We94gjjlj59eSTT06SXH311fn85z+fJDn66KPzzne+M0my11575dhjj82hhx6aQw45ZEzf36GHHprPfvazmT9/fhYsWJAFCxbk5ptvzg033JD99tsvSfLQQw9l2223TZLMmjUrRx55ZA4++OAcfPDBYzpXL4RaAACASXbmmWfmSU96Ur7//e/n4YcfziabbPKoNq997Wuz++6759JLL80BBxyQc889N621vO51r8tpp40+4VVVrfbx6tqcffbZ+c53vpNLL700s2fPHtM9wIcddlhe85rX5JBDDklVZfvtt88PfvCDPOc5z8nVV1/9qPaXXnppvv71r+dLX/pSPvCBD+TGG2/MhhtOXBQ1/BgAAGCS3X333dl2222zwQYb5NOf/vRq74u9/fbb88xnPjMnnXRSXv7yl+f666/Pvvvum4svvji/+MUvkiS/+tWv8uMf/3i151iwYMHKr3vuuWeS5HnPe14uuuiiJMkFF1yQvffeO0ly2223Zffdd8/73//+bLXVVrnzzjsfcazHPe5xueeee1Z7nmc961mZMWNGPvCBD+Swww5Lkjz72c/OsmXLVobaBx98MDfeeGMefvjh3HnnnZk3b17OOOOM/OY3v8lvf/vbMb13o9FTCwAATF89LMEzFf7sz/4sr3rVq/K5z30u8+bNy2Mf+9hHtVmwYEE+85nPZKONNsqTn/zkvPe9780Tn/jEnHrqqdl///3z8MMPZ6ONNspZZ52Vpz/96Y96/f3335/dd989Dz/8cC688MIkQ5M0veENb8iHPvShbL311jn//POTJO94xztyyy23pLWWfffdN7vssku+9rWvrTzWQQcdlFe/+tW55JJL8vGPf/xR5zrssMPyjne8Iz/60Y+SJBtvvHEuvvjinHTSSbn77ruzfPnyvOUtb8kOO+yQo446KnfffXdaazn55JPzhCc8YULe0xWqtTahB5wqc+bMaQsXLux3GROj17WzBuQvJAAADKrFixdnxx137HcZU27mzJlZuHBhttpqq36Xsk5W93Orqmtba3NGe63hxwAAAHSW4ccAAAAdt2TJ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\n",
      "text/plain": [
       "<Figure size 1152x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "    \n",
    "true_positives_NN=output_NN[:,1][np.where(Y_test==1)[0]]\n",
    "false_positives_NN=output_NN[:,1][np.where(Y_test==0)[0]]\n",
    "\n",
    "true_positives_NN=output_NN[:,1][np.where(Y_test[:,1]==1)]\n",
    "false_positives_NN=output_NN[:,1][np.where(Y_test[:,0]==1)]\n",
    "plt.hist(true_positives_NN,alpha=0.5,bins=80,density=True,label=\"True positives\");\n",
    "plt.hist(false_positives_NN,alpha=0.5,bins=80,density=True, label=\"False positives\");\n",
    "plt.xlabel(\"NN BDT output\", fontsize='15')\n",
    "plt.ylabel(\"Events (a.u.)\", fontsize='15')\n",
    "plt.legend()\n",
    "fig=plt.gcf()\n",
    "fig.set_size_inches(16,8)\n",
    "plt.savefig('/home/hep/davide/Rphipi/'+PATH+'/fp_vs_tp_NN.png', format='png', dpi=100)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# SETTING UP XGBOOST"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n",
       "       colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
       "       max_depth=3, min_child_weight=1, missing=None, n_estimators=100,\n",
       "       n_jobs=1, nthread=None, objective='binary:logistic', random_state=0,\n",
       "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,\n",
       "       silent=True, subsample=1)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "PATH=l_flv[l_index]+'/test_'+str(test)+'/XG_'+str(i)\n",
    "if not os.path.exists(PATH):\n",
    "    os.mkdir(PATH)\n",
    "# fit model to training data\n",
    "model = XGBClassifier()\n",
    "\n",
    "model.fit(X_train_2, Y_train[:,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "output_XG=model.predict_proba(X_test_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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fl37zOx5YJCZHQOW440oaAncFrSfwcA8MxsPTMG7P/pvwDjn3Bb/WD4FpuMl1g7v3/E3vIQevGchx5v36KoVwB7n3IZTOnEiIpJvlASLiEiaJ4B2eMNaY/AmpPocuNU5t97MYoD6ePdNhvKwv4A3LPU7oKlzblk2dS7D6z3sDBQDNuINY/4HBJKpDniPHnoQL5HdhzeB0YtZ7dQ596n/+KWheI/9ifD3PRe/V9sfVns13iOCngcK4z3S6Sl//WH/cUODgcV495Qaod0NPIPXI1rCP/bWLv3jkfKEc26cfx/yg8D/4vUOP+yce+4MVfky3nl7PkM7/s/MXgGGmdm7zrk9zrkU/7nDffHuHX4Q72+RzXg985elDY8O8mzQ6514SW5v59zGoPjjwDG8ZD8e74uI/3HOTQlqz3z//t5BeI+/2gWMIuhZxng9wt3wZqZOBf6LNzN22mOppuI9cmoE3hc9E/nj3mQRETlHmHMZbycSERHJzMy6ACOccxknNhIRERE5ZygJFhERERERkbChibFEREREREQkbCgJFhERERERkbChJFhERERERETChpJgERERERERCRtKgkVERERERCRsKAkWERERERGRsKEkWERERERERMKGkmAREREREREJG0qCRUREREREJGwoCRYREREREZGwoSRYREREREREwoaSYBEREREREQkbSoJFREREREQkbCgJFhERERERkbChJFhERERERETChpJgERERERERCRtKgkVERERERCRsKAkWERERERGRsKEkWERERERERMKGkmAREREREREJG0qCRUREREREJGwoCRYREREREZGwoSRYREREREREwoaSYBEREREREQkbSoJFREREREQkbCgJFhERERERkbChJFhERERERETChpJgERERERERCRtKgkVERERERCRsKAkWERERERGRsKEkWERERERERMKGkmAREREREREJG0qCRUREREREJGwoCRYREREREZGwoSRYREREREREwoaSYBEREREREQkbSoJFREREREQkbCgJFhERERERkbChJFhERERERETChpJgERERERERCRt5mgSb2RtmtsvMVmSI329ma8xspZmNCIo/ambr/HXNguLN/dg6MxuQl8cgIiIiIiIi5y5zzuVdZWbXAb8CbzrnavqxG4CBQCvn3BEzi3PO7TKzi4HJQF2gLLAQqOrv6gegCbAFWAbc5pz7Ps8ORERERERERM5JBfOyMufcJ2ZWMUP4HuBp59wRv8wuP94OmOLH15vZOryEGGCdc+4nADOb4pdVEiwiIiIiIiLZOhvuCa4KXGtmX5rZYjO70o8nApuDym3xY1nFMzGzXma23F96nYG2i4iIiIiIyDkkT3uCs1AQKAnUB64EpprZhYCFKOsInbiHHNPtnBsLjAUoXbq0S0pKejVXWiwiImHvq6++2uOci83vdpzLSpcu7SpWrJjfzRARkT+JnF6bz4YkeAvwvvNuTl5qZseB0n68fFC5csA2/3VW8SxVrFiR5cuX506LRUQk7JnZxvxuw7lO12YREclNOb02nw3DoWcAjQDMrCpQCNgDzAI6m1lhM6sEVAGW4k2EVcXMKplZIaCzX1ZERERyiZlVM7Ovg5aDZvagmcWY2QIzW+v/LOmXNzN7wX9yw7dmVju/j0FERCSUvH5E0mRgCVDNzLaYWU/gDeBC/7FJU4CuzrMSmIo34dVcoK9zLtU5dwy4D5gHrAKm+mVFREQklzjn1jjnLnfOXQ7UAVKA6cAA4CPnXBXgI/89QAu8L6yrAL2AMXnfahERkRPL69mhb8ti1f9kUX4YMCxEfA4wJxebJiIiIllrDPzonNtoZu2Ahn58IvAx0B/vSQ1v+rc3fWFmJcysjHNue340WEREJCtnw3BoERERObt1Bib7r+PTElv/Z5wfz/HTG0RERPKTkmARERHJkj//Rlvg3RMVDRHL9PSG4McX7t69OzeaKCIiclLOhtmhReRP4ODBg+zatYujR4/md1NETltkZCRxcXEUL148v5tyNmgB/J9zbqf/fmfaMGczKwPs8uPZPdUhIPjxhUlJSSEfcSiSn3Q9Ezk75ea1WUmwiJy2gwcPsnPnThITEylSpAhmoTqERM4NzjkOHTrE1q1bAZQIw238MRQavCcydAWe9n/ODIrfZ2ZTgHrAAd0PLOcaXc9Ezk65fW3WcGgROW27du0iMTGRokWL6g8GOeeZGUWLFiUxMZFdu3adeIM/MTMrCjQB3g8KPw00MbO1/rqn/fgc4CdgHTAOuDcPmyqSK3Q9Ezk75fa1WT3BInLajh49SpEiRfK7GSK5qkiRImE/HNI5lwKUyhDbizdbdMayDuibR00TOSN0PRM5u+XWtVk9wSKSK/SNufzZ6DMtEp70f1/k7JVb/z+VBIuIiIiIiEjYUBIsIgIMGTIEM6NKlSoh11euXBkzY8iQIZnWvf/++zRq1IgSJUpQuHBhqlatyqBBg9izZ89ptad06dKnvH1uaNiwITfffHO+tuFUjB07lhkzZuR3M0RE8s2ECROoU6cOxYoVo2TJklxxxRX069fvjNf78ccfY2asWLEiV/c7f/58nn/++VzdZ+nSpUNe04Nt376dli1bcv7552NmfPzxx7nahtN1Jq93eXkt/f333xkyZAhff/11ntQHSoJFRAKioqJYv349y5cvTxdftmwZGzduJCoqKtM2Dz/8MJ06deLCCy/krbfeYv78+Tz00EP861//4u677z7lttx1113MmzfvlLcPZ0qCRSScPfXUU9x11100a9aM999/nzfffJN27doxa9as/G7aKTsTSXBODBs2jG+++YbJkyezZMkSateunedtyM6fKQkeOnRonibBmhhLRM6YigNm50u9G55udUrbRUdHU7t2baZMmUJSUlIgPmXKFBo1asRXX32Vrvy//vUv/v73v/P666/To0ePQPz666+nV69ezJ8//9QOAChXrhzlypU75e1FRCT3PPr+d/lS71MdLj3pbV566SV69+7N8OHDA7E2bdowePDg3GxaWFi9ejX16tWjZcuWWZZJTU0lNTWVQoUK5WHL5HSpJ1hEJEjnzp2ZOnUq3kS33nPppk6dSufOnTOVfe6556hdu3a6BDhNREQELVq0yLKe/fv3c9ddd1G2bFmioqKoUKFCup7jUMOhv/32W6666iqioqK45JJLmDNnDklJSXTr1i1Qplu3biQlJbFgwQJq1apFdHQ011xzDStXrky3r1GjRnHllVdy/vnnEx8fT5s2bVi3bl2OzlFGM2fOJCkpiaioKBISEkhOTg7M3Lho0SLMLFP9P//8M4UKFeL1118PxD799FOuv/56ihYtSqlSpbj77rv55ZdfAusnTJiAmfHdd9/RpEkToqOjqV69Ou+//8fTexo2bMhXX33FxIkTMTPMjAkTJgAwa9Ys6tSpQ3R0NCVLlqRevXosXrz4lI5ZRORstX//fhISEjLFTzSh0ImuSwArVqygVatWFCtWjGLFitGpUyd27NiR7X6PHz/O008/TeXKlQO3DE2cODFTuenTp1O3bl2KFClCqVKlaNmyJRs3bmTIkCGMGjWKjRs3Bn6vB1/3TnTtAPjkk0+47LLLiIqKok6dOnz++efZthm88/XRRx8xffp0zIyKFSsCf1xnZ8yYwSWXXEJUVBRffvklAF9//TWNGzemaNGilCxZkttvv52dO3cG9rlhwwbMjClTptC9e3eKFy9OuXLlePvttwEYMWIEZcuWJTY2lv79+3P8+PEs25fd9Q7gtdde45JLLqFw4cJccMEFjBgxIt32K1eupHnz5sTExBAdHU2NGjV4+eWXc7TvjJ566ikqV65MVFQU8fHxNG/ePN3nYt++ffTu3Zv4+HiioqK46qqrAucMoFixYgB07949UN+GDRuy/sfJBUqCRUSCdOjQgZ07d/Lpp58C8J///Ifdu3fTvn37dOWOHj3K559/TvPmzU+pnn79+vHpp5/y3HPPMW/ePIYPH57tHygpKSk0a9aMQ4cOMXnyZAYNGsRDDz3Epk2bMpXdtGkTf/nLXxg4cCCTJ09m165d3HLLLYHEHmDLli3cd999zJw5k3HjxpGamsrVV1/NgQMHTuo4pk6dSocOHahbty6zZs1i8ODBjB07lkcffRTwesXLlCnD1KlT0203ffp0gMB5/eyzz2jcuDEJCQlMmzaN559/njlz5tC9e/dMdXbp0oW2bdsyffp0qlSpQufOndmyZQsAo0ePpnr16rRs2ZIlS5awZMkSWrVqxY8//sjNN99Mo0aN+Ne//sWkSZNo3bo1+/btO6njFRE529WuXZsXX3yRiRMnsnfv3hxvd6Lr0rp167j66qs5fPgwb731FhMmTGDlypW0adMm3fUlo/vvv58nn3ySXr16MXv2bNq3b0+PHj344IMPAmXeeustOnTowEUXXcTUqVMZP348VatWZffu3dx111106dKFhISEwO/1xx57DMjZtWPbtm20aNGCmJgYpk2bRu/evbn99ttJSUnJ9nwsWbKEK664ghtuuIElS5YErlvgJbPJyck8+uijzJkzh0qVKrF7924aNmxISkoK//znP3nxxRdZvHgxTZo04ffff0+37/79+1OmTBnee+89rr32Wrp27crDDz/M0qVLeeONN3jwwQcZMWJEpmtnsKyudwAjR47knnvu4aabbuKDDz7gnnvu4bHHHuOll14KbN+2bVsiIiJ4++23mTVrFvfff3/gy4Ps9p3Rm2++yfDhw+nXrx/z5s1jzJgxVK5cmd9++w2AI0eOcOONN7JgwQJGjhzJjBkziI2N5cYbbwwkyv/+978BGDRoUKC+MmXKZPvvc7o0HFpEJEiJEiVo3rw5U6ZM4dprr2XKlCk0b96cEiVKpCu3d+9ejhw5QoUKFU6pnqVLl9K3b19uvfXWQOx//ud/siw/fvx49u7dy/Lly0lMTATgoosuol69epnK7tu3j88++ywwydfx48dp3749a9asoXr16oDXi50mNTWVJk2aEBcXx8yZM7nzzjtzdAzOOf7yl79w5513Mnr06EC8cOHC9O3bl0cffZRSpUrRqVMn3nnnHYYOHRoo884779C0aVNiYmIAGDBgAFdddRXvvPNOoExiYiKNGzdmxYoV1KxZMxB/6KGHAr3vderUIT4+ng8++IA+ffpw8cUXEx0dTWxsLPXr1w9ss3jxYooVK8bIkSMDseyGt4mInKtefvllbrrpJrp164aZUaNGDTp27MgjjzxC8eLFs9zuRNeloUOHkpCQwIcffhgY+lurVi2qV6/OnDlzQiZJ69atY8yYMYwfP56uXbsCcOONN7J9+3aGDh1K69atOX78OAMGDKB9+/ZMnjw5sG3btm0Dr8uUKUPhwoXT/V6HnF07nn/+eaKiopg9ezZFixYFvNufsrvmAtSvX5/ixYsTExOTqd69e/eycOFCLr/88nRtAZg3b17gPFetWpV69erx3nvvcdtttwXKNmrUKDBcvV69ekybNo1Zs2axevVqIiIiaN68OTNnzmT69OkhR6IBWV7vDh48yNChQxk0aFBgCHyTJk1ISUnhySef5J577uHnn3/mp59+YsaMGVx6qTfkvnHjxifcdyhLly6ladOm3HvvvYFYhw4dAq/ffvttVqxYwcqVKwN/l9x4441Uq1aNUaNGMXLkSK688krA+7vmRPXlFvUEi4hk0LlzZ6ZNm8aRI0eYNm1alhcgOPXn1V1++eWMHDmS0aNH88MPP5yw/LJly6hTp04gAQaoW7cu8fHxmcpWrFgx3SzXF198MUCgtxTgiy++oEmTJpQqVYqCBQtStGhRfv311xy1Jc0PP/zApk2buOWWWzh27FhgadSoEYcPHw7MDnrrrbeyZs0avvnmGwD27NnDv//978AfWikpKSxZsiTTfq655hoiIyMz3YvdtGnTwOtSpUoRFxeX7thCufTSSzlw4ABdu3Zl/vz5gW+oRUT+bGrVqsWqVauYNWsW9957L845/va3v5GUlMSvv/6a5XYnui4tXLiQ9u3bU6BAgcDv6UqVKlGxYsVME0qm+eijjyhQoADt27dP9/u9cePGfP3116SmprJmzRq2bdsWcuRPdnJ67Vi6dClNmjQJJMCQPkk7FYmJiekS4LR6mjZtmu6Lhrp161KxYsXA6LI0wQln8eLFiY2N5frrryciIiIQr1y5Mlu3bj3pti1ZsoTffvuNTp06Zbo279y5ky1bthATE0P58uXp06cP77zzDrt27TrpetJcfvnlzJkzh8GDB7N06VJSU1PTrV+4cCF16tShUqVKgbaAN1Isq89NXlASLHmq4oDZmRaRs03btm359ddfGThwIL/99htt2rTJVKZUqVIULlw45HDknHjppZe46aabeOKJJ6hWrRpVqlRhypQpWZbfsWMHsbGxmeKhYhl7rdO+sT98+DDgDZdu2rQpzjleffVVPvvsM5YtW0ZcXFygTE6kPQKqZcuWREZGBpZKlSoBsHnzZgAaNGhAhQoVAt/Uv/feexQsWJCbbroJ8O4PTk1N5d577023n8KFC3P06NHAfrI7vhO1u1q1asycOZOffvqJli1bUrp0abp06cLu3btzfLwiEiZ+T8m8HD+W3606KYULF6ZNmza89NJLfP/997z22musXbs23TwMGZ3ourRnzx6eeeaZdL+nIyMj+emnnzL9ng7eJjU1lfPPPz/dNt26dePYsWNs3749MGT7ZIe/5vTasWPHDuLi4tJtW6RIEc4777yTqi9YqC+gt2/fHjIeHx+f6dabUNexU7m2hZJ2bb7kkkvSnZcbbrgB8K7NBQoUYP78+SQkJNCjRw8SEhK49tpr+e9//3vS9fXo0YPhw4czdepU6tWrR3x8PI899lggGd6zZw9ffPFFps/N+PHjs/zc5AUNhxYRySA6OprWrVvz3HPP0alTJ6KjozOViYyM5Oqrr2bevHk8+eSTJ11HiRIleOGFF3jhhRf49ttvGTFiBLfffju1atUK9NwGS0hIYM2aNZnip5LEzZ07l5SUFGbOnBk4tmPHjp30/bFpQ5nHjh3LFVdckWl9WjJsZtxyyy288847DB8+nHfeeYcWLVoEJsIoUaJE4BnMoYYoly1b9qTalZVWrVrRqlUrDhw4wOzZs3nwwQe5//77s/3yQUTkz6Bnz54kJyezevXqLMuc6LoUExND+/btueuuuzJtm9Vz7WNiYihYsCCfffYZBQpk7nuLi4sL3Ie6ffv2kzqmnF47EhISMvV0Hjp0KNte8RMJNQqsTJkyIXtUd+7cSZ06dU65rpOVdm3+4IMPQibl1apVA6B69eq89957HD16lP/85z/079+fVq1asWXLlpD/VlkpUKAADz30EA899BCbN29m0qRJDBw4kMTERPr06UNMTAxJSUmMGTMm07aFCxc+xaM8fUqCRURCuOeeezhy5Ah9+vTJssyDDz5I27ZtmThxYuBepzTHjx9n/vz5OZo4q1atWowcOZJJkyaxevXqkEnwlVdeyaRJk9gXi0+xAAAgAElEQVS6dWtgSPTSpUvTzTqZU4cOHaJAgQIULPjHJWDq1KmBIUo5Va1aNRITE9mwYcMJn4ncuXNnnn32WT744AMWL16c7r6v6Oho6tevz5o1a3j88cdP7mBCONG35+effz5dunRh8eLFLFmy5LTrExE5m+zatStTz+fu3bs5cOBAyKQolFDXpbT7bOvUqZPjW4EaNWpEamoqBw4coEmTJiHLpF1LJk6cGHLkFYT+vZ7Ta8eVV17JG2+8QUpKSmBIdPBTBXJLvXr1GDNmDL/88kvgS95ly5axYcMGrrnmmlyvD0KflwYNGlCkSBG2bduW5WRWwSIjI2nUqBH9+vWjS5cu7N+/n5iYmFPqiS5fvjwDBgxg/PjxfP/994A39Hv+/PlUqFAh0+cy+DiAU+r5PlVKgkVEQmjYsCENGzbMtkybNm3o168fPXv25LPPPqNdu3acd955rF69mldeeYWKFStmmQRfc801tG/fnpo1a2JmjBs3jujoaOrWrRuyfPfu3XnyySdp3bo1gwcP5tChQwwePJjY2NiT+sYW/vijpHv37vTs2ZOVK1fy7LPPZhqKdSIFChRg1KhR3HHHHRw8eJAWLVpQqFChwGQb06ZNC/zBUadOHSpXrkyvXr0oUqQIrVu3TrevESNG0LhxYwoUKMDNN99MsWLF2LRpE7Nnz2bYsGFUrVo1x+2qXr068+bNY968eZQqVYpKlSoxbdo0lixZQvPmzSlbtixr167l3XffzfEkYCIi54pLL72Udu3a0bRpU+Li4ti4cSPPPvssRYsWzfSFbbATXZeGDBlC3bp1adWqFT169KB06dJs3bqVBQsW0K1bt5DXzGrVqtGnTx86d+5McnIySUlJHD58mJUrV/LDDz/w2muvUaBAgUCv8+23385tt92GmfHvf/+b2267jaSkJKpXr87OnTuZMGECNWvWpHTp0lSsWDFH144HH3yQl19+mdatW9OvXz+2bdvGU089RZEiRXL1vPfr148xY8bQrFkz+vfvz6+//sqAAQO49NJL6dixY67WlSbU9a5UqVIMGTKE//3f/2Xjxo1cd911HD9+nB9++IFFixYxffp0vv32Wx555BFuvfVWLrzwQn7++WeeeeYZLrvsskBPclb7zqh3796BycPOP/98Fi1axNq1a3nmmWcAuPPOO3nllVdo2LAhjzzyCBdeeCF79+5l6dKlJCQk8NBDD1GoUCEqVarE1KlTqVmzJlFRUdSqVeuMPntZSbCIyGkYNWoUV111FS+99BJdunTh0KFDVKxYkbZt2/LII49kuV2DBg2YMGECGzZsICIigiuuuIIPP/yQcuXKhSxftGhR5s6dyz333MOtt94auPgnJydnO9tnKJdeeinjx49n6NChTJ8+ncsuu4x333033YygOXXrrbdSvHhxhg8fzhtvvEFERAQXXnghrVu3znTxuvXWWxk2bBidO3dON0EJeH98ffLJJwwePJg77riD1NRULrjgApo3b57jnos0gwYNCkzYdfDgQcaPH0+tWrWYNWsW/fr1Y9++fZQpU4a7776bJ5544qSPWUTkbPb4448zc+ZMHnjgAfbt20dCQkJgBuW021RCOdF1qWrVqnzxxRcMGjSIXr16cejQocBMzJUrV85yvy+//DJVq1Zl3LhxPP744xQvXpyLL76Ynj17Bsp06dKFqKgohg0bxs033xzo5U2b9+KWW25h0aJFJCcns3v3brp27cqECRNydO1ITExkzpw5PPDAA3Ts2JEaNWrw9ttv065du9w43QGxsbEsWrSIhx9+mNtuu41ChQrRsmVLnnvuuTOWzIW63nXr1o3k5GTKli3Lc889x6hRo4iKiqJq1aqB63xCQgLx8fEMGzaMbdu2UaJECW644YZA4prdvjNq0KAB48aN49VXX+Xw4cNUrlyZcePGBeb9iIqKYtGiRTz++OMMHjyYnTt3EhcXR926ddPNAP7KK6/wyCOPcOONN3LkyBHWr18feDbzmWDZPdfrzyQpKcnl5wxk4gk1EdaGp088VEPObqtWraJGjRr53Yyws379eqpWrcrYsWNPelZNyZnsPttm9pVzLimPm/SnomuznG1WrVpFjYsuCL2yUNHQcRHJU7lxbVZPsIjIOeKpp56ibNmyXHDBBWzatImnnnqK2NjYMzbMSkREROTPSEmwiMg5wswYOnQo27Zto3Dhwlx77bU8++yzJz0cWkRERCScKQkWETlHDBgwgAEDBuR3M0RERETOaSc3paiIiIiIiIjIOUxJsIiIiIiIiIQNJcEikivCZaZ5CR/6TIuIiPw5KQkWkdMWGRnJoUOH8rsZIrnq0KFDREZG5nczREREJJcpCRaR0xYXF8fWrVtJSUlR75mc85xzpKSksHXrVuLi4vK7OSIiIpLLNDu0iJy2tEf0bNu2jaNHj+Zza0ROX2RkJPHx8Xr8lIiIyJ+QkmARyRXFixdXwiAiIiIiZz0NhxYRERER+RMwsxMuH3/8ca7U9f333zNkyBB+/fXXXNnficyZM4eXXnopx+U3bNjAeeedx+bNmwOxn376iS5dulC+fHmioqKoUKEC7du3Z8mSJafVtoSEhHTnOC4ujjZt2rBy5cp05Xr27Enfvn1Pqy7JHeoJFhERERHJzvZvIDIq7+ste8VJFQ9O5g4dOkSjRo0YNGgQrVq1CsQvvvjiXGna999/z9ChQ+nTpw/nnXderuwzO3PmzGHhwoXcd999OSo/dOhQOnXqRPny5QHYvXs39erVo1KlSowcOZL4+HjWr1/PjBkz+PLLL2nQoMFpta9bt2707t0b5xxbt27lySefpFmzZqxatYpixYoBkJyczOWXX07//v2pUKHCadUnp0dJsIiIiIjIn0D9+vUDr9N6aC+66KJ08XCwd+9e/vnPf7Jw4cJAbMqUKezfv5958+ZRsmRJAG644QZ69OiR7aSec+fO5aabbuLw4cPZ1pmYmJjuPF944YXUqVOHZcuW0ahRIwCqVatGnTp1ePXVVxk2bNjpHKKcJg2HFhEREREJM+vXr6dTp06UKFGC6OhoWrVqxY8//hhY75zjiSee4MILLyQqKoqEhARatmzJ3r17mTt3Lp06dQKgTJkymBnVq1fPsq5vvvmGJk2aULJkSc477zwuueQSxo0bl67MtGnTqF27NlFRUZQtW5aBAweSmpoKwIABA3j55ZdZs2ZNYMhxnz59sqxv8uTJxMTEcM011wRi+/fvp0iRIpx//vmZyptZzk7aSUjr/c04YWjHjh156623cr0+OTnqCRYRERERCSO7du3i6quvJjExkddee41ChQoxbNgwmjZtyqpVqyhUqBDjxo1j1KhRjBgxgho1arB7924WLlzIoUOHaNCgAcOHD+evf/0rs2fPJiYmhiJFioSs6/jx47Rq1YqkpCT++c9/UqhQIVatWsWBAwcCZd588026d+/Offfdx9NPP82aNWv461//ipnx5JNP0rdvX3788UeWLVvGlClTAIiPj8/y+D766CPq16+fLrmtXbs2v/zyC926daNfv35cdtlluZr8Ouc4duwYAFu3bmXAgAHExcVx9dVXpyt31VVX0a9fP9asWUO1atVyrX45OUqCRURERETCyMiRIzl+/DgLFy4M9Iw2aNCASpUq8dZbb9GzZ0+WLl1K69at6d27d2C7jh07Bl5XqVIF8JLLhISELOvatm0bW7duZdGiRYFtGjduHFifmppK//796dWrF//4xz8AaNq0KRERESQnJ5OcnEz58uWJj48nKioqR0O7v/rqK7p27Zou1qpVK+69915Gjx7NW2+9RfHixWnatCl9+/alYcOGgXLOuUAPNHhJPBBIcMHrOY6IiEi3/+HDhzN8+PDA+1KlSjFjxoxM90tfdtllACxdulRJcD7ScGgRERERkTCycOFCmjdvTnR0NMeOHePYsWOULFmSyy67jOXLlwNw+eWXM2PGDJ544gmWL18eSAZPVnx8PAkJCdx99928++677N69O936FStWsGPHDjp16hRoy7Fjx2jUqBG//fYbq1atOuk6d+7cSenSpTPF04ZUP/PMM1x77bXMnj2bRo0aMWHChECZV199lcjIyMDSqlUrjhw5ki4WHR2dad89evRg2bJlLFu2jLlz59KsWTPatWuXqf1RUVFER0ezY8eOkz4uyT1KgkVEREREwsiePXuYOHFiusQuMjKSzz//PPBIoXvuuYfBgwczadIkrrzyShISEhg6dOhJJ8ORkZEsWLCAEiVK0LVrVxISEmjYsCHfffddoC3g9Q4Ht6VGjRoA6R5xlBOpqakcPXqUwoULh1xftWpVkpOT+eCDD1i/fj2XXHIJjz76aGB9x44dA8nssmXLeOGFFyhUqFC62Oeff55pv2XKlCEpKYmkpCSaNWvGW2+9RWxsbMgJsAoXLnzCibbkzNJwaBERERGRMBITE0P9+vXp379/pnVpw6ODhyNv3LiRN998k8GD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\n",
      "text/plain": [
       "<Figure size 1152x576 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.suptitle('S/B selection from XGBoost', fontsize='15')\n",
    "Ds_mass_MC =[MC_Ds_sig_dict[\"Ds_ConsD_M\"][i][0]/1000 for i in range(m_s)]\n",
    "Dplus_mass_MC =[MC_Dplus_sig_dict[\"Dplus_ConsD_M\"][i][0]/1000 for i in range(m_plus)]\n",
    "XG_selected = X_dict[i][np.argmax(output_XG,1).astype(np.bool)]\n",
    "Ds_mass_sel_XG = XG_selected[:,dim-1]/1000\n",
    "Ds_mass_train_XG =X_dict[i][:,dim-1:dim]/1000\n",
    "\n",
    "plt.subplot(1,2,1)\n",
    "plt.hist(Ds_mass_MC+Dplus_mass_MC,bins=70, label='MC signal events');\n",
    "plt.legend(fontsize='15')\n",
    "plt.ylabel('# events', fontsize=15)\n",
    "plt.xlabel('Reconstructed D_s Mass (GeV)', fontsize=15)\n",
    "plt.subplot(1,2,2)\n",
    "\n",
    "plt.hist(Ds_mass_sel_XG,alpha=0.6,bins=70, label='S selected from test set');\n",
    "plt.hist(Ds_mass_train_XG,alpha=0.2,bins=70, label='Test set (S+B)');\n",
    "plt.legend(fontsize='15')\n",
    "plt.ylabel('# events', fontsize=15)\n",
    "plt.xlabel('Reconstructed D_s Mass (GeV)', fontsize=15)\n",
    "fig=plt.gcf();\n",
    "fig.set_size_inches(16,8)\n",
    "plt.savefig('/home/hep/davide/Rphipi/'+PATH+'/D_s_XG.png', format='png', dpi=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA68AAAHoCAYAAACmWtkUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3XucnWV5L/zfRQBB0XoAlBYxasENxRBpCCgoBgR0ixZREUQQtRu026J4DO1u66kvigfc+mLZbJTWihClVXhFq6mChwpiUKQg5SBGDmpFVApyDNzvH2slDpNJsoasWfNM5vv9fNZnZta653mutfKY+OO6n/uu1loAAACgyzaa7gIAAABgXYRXAAAAOk94BQAAoPOEVwAAADpPeAUAAKDzhFcAAAA6T3gFAACg84RXAAAAOk94BQAAoPM2nu4C1mXLLbdsc+fOne4yAAAAGLJLLrnkl621rQYZ2/nwOnfu3Cxbtmy6ywAAAGDIquong441bRgAAIDOE14BAADoPOEVAACAzuv8Pa8AAADj3Xvvvbnxxhtz1113TXcpDGCzzTbLtttum0022eRBH0N4BQAAZpwbb7wxD3/4wzN37txU1XSXw1q01nLLLbfkxhtvzBOf+MQHfRzThgEAgBnnrrvuymMe8xjBdQaoqjzmMY9Z7y658AoAAMxIguvMMYw/K+EVAACAznPPKwAAMOOdtPTqoR7vuP12WOvrt9xyS/bdd98kyc9//vPMmTMnW221VZLk4osvzqabbjrUetbXq171qixevDjbb799TjzxxCxevDhJct999+XZz352vvnNb05zhesmvAIAAEzSYx7zmFx66aVJkne84x3ZYost8pa3vOUBY1praa1lo42mf8Lr6aefniRZsWJF3vve964Kr3PmzJkRwTUxbRgAAGBorr322uy888557Wtfm1133TU33HBDHvnIR656/ayzzsqf/umfJkn+8z//MwcffHAWLFiQhQsX5qKLLlrteKeddlpe9KIX5YADDshTnvKUvOc971n12oknnpidd945O++8cz760Y8mSW677bY873nPyy677JKdd945Z599dpJkr732yqWXXprFixfntttuy/z583PkkUdmxYoVq+p78YtfnK985Surjv+KV7wi55xzTlasWJE3velNWbhwYebNm5fTTjstSXLTTTdlr732yvz587Pzzjvn29/+9pA/zQfSeQUAABiiH/7whzn99NNzyimnZMWKFWscd+yxx+Ztb3tb9thjjyxfvjwHHnhgLr/88tXGXXzxxbn88suz6aabZrfddsuBBx6Ye+65J2eccUYuvvji3HfffVm4cGH23nvvXHnllZk7d26+9KUvJUluvfXWBxzrve99b0477bRVXeOx9R166KFZsmRJ9t9//9x11135+te/no9//OM59dRTs/XWW+fiiy/O3XffnT322CP7779/zjzzzLzgBS/I29/+9tx333258847h/HxrZHwCgAAMERPfvKTs9tuu61z3L/+67/mqquuWvXzr3/969x5553ZfPPNHzDugAMOyKMe9agkyUEHHZRvfetbufvuu/PiF784D33oQx/w/KJFi7J48eIsXrw4L3jBC7LnnnsOXPfzn//8vPnNb869996b8847L/vss08e8pCH5Ctf+UquvPLKnHXWWUl6gfiaa67JbrvtlmOOOSZ33XVXDjrooOyyyy4Dn+vBEF4BAACG6GEPe9iq7zfaaKO01lb9PHav09baQIs7jd9mpqoecMyxdtxxxyxbtixf/OIX89a3vjUHHnhg/uIv/mKguh/60Idmzz33zNKlS7NkyZK86lWvWlXnxz72sVULVI11wQUX5Lzzzsvhhx+e448/PocffvhA53ow3PMKAAAwRTbaaKM86lGPyjXXXJP7778/n/vc51a99pznPCcnn3zyqp9XTuUd7ytf+Up+85vf5I477sg555yTPffcM8961rPyuc99LnfeeWduv/32nHPOOXnmM5+Zm266KVtssUWOOOKIvOlNb8r3vve9Bxxr4417/cs1TWc+9NBD8/GPfzwXXnhhnvOc5yTpdX4/9rGPrfqdq666KnfeeWd+8pOf5HGPe1yOPvroHHXUUfn+97//4D+oAei8AgAAM966traZTu973/vy3Oc+N9ttt1122mmn3H333UmSk08+Oa973ety+umnZ8WKFVm0aNEDwuxKe+21V17+8pfnRz/6UY444ojMnz8/SXLYYYetmp78ute9Lk996lPzxS9+MYsXL85GG22UTTfdNKeccspqx3vNa16TefPmZcGCBfnEJz7xgNee+9zn5pWvfGVe+tKXZpNNNkmSHHPMMbn++utXnXfrrbfOOeeck69+9av50Ic+lE022SRbbLFFPvWpTw3vQ5tArand3BULFixoy5Ytm+4yAACADrnyyiuz4447TncZU+60007L5Zdfng9/+MPTXcp6m+jPrKouaa0tGOT3TRsGAACg80wbBgAA6KiVe8IivHbP+ScMNm7R8VNbBwAAQIeYNgwAAEDnCa8AAAB0nvAKAABA57nnFQAAmPkGXTtmUAOsMTNnzpw89alPXfXz5z//+cydO3fCscuXL8+BBx6Yyy+/fFgVPmjLli3LJz/5yXzkIx/JBRdckE033TTPeMYzkiSnnHJKHvrQh+bII4+c5ipXJ7wCAAA8CJtvvnkuvfTS6S5j0hYsWJAFC3pbq15wwQXZYostVoXX1772tdNZ2lqZNgwAADAky5cvzzOf+czsuuuu2XXXXfPtb397tTFXXHFFFi5cmPnz52fevHm55pprkiSf+tSnVj1/zDHH5L777lvtd+fOnZu3v/3tWbhwYRYuXJhrr702SfKTn/wk++67b+bNm5d99903119/fZLks5/9bHbeeefssssuedaznpWkF1gPPPDALF++PKecckpOOumkzJ8/P9/85jfzjne8Ix/4wAdy5ZVXZuHChQ94X/PmzUuSXHLJJdl7773zx3/8xznggAPys5/9LEnykY98JDvttFPmzZuXQw89dIifao/wCgAA8CDceeedmT9/fubPn58XvehFSZKtt946S5cuzfe+970sWbIkxx577Gq/d8opp+QNb3hDLr300ixbtizbbrttrrzyyixZsiT/9m//lksvvTRz5szJGWecMeF5H/GIR+Tiiy/O61//+rzxjW9Mkrz+9a/PkUcemcsuuyyHH374qvO+613vype//OX84Ac/yLnnnvuA48ydOzevfe1rc9xxx+XSSy/NM5/5zFWv7bjjjrnnnnty3XXXJUmWLFmSQw45JPfee2/+/M//PGeffXYuueSSvPrVr85f/uVfJkne+9735vvf/34uu+yynHLKKev56a7OtGEAAIAHYaJpw/fee29e//rXrwqgV1999Wq/9/SnPz1/+7d/mxtvvDEHH3xwtt9++3z1q1/NJZdckt122y1JLxhvvfXWE573sMMOW/X1uOOOS5JceOGF+ed//uckyRFHHJG3ve1tSZI999wzRx11VA455JAcfPDBk3p/hxxySD7zmc9k8eLFWbJkSZYsWZKrrroql19+efbbb78kyX333ZdtttkmSTJv3rwcfvjhOeigg3LQQQdN6lyDEF4BAACG5KSTTspjH/vY/OAHP8j999+fzTbbbLUxL3/5y7P77rvnvPPOywEHHJDTTjstrbW88pWvzAknrHvhqaqa8PuJxpxyyin5zne+k/POOy/z58+f1D26L3vZy/LSl740Bx98cKoq22+/ff793/89f/RHf5QLL7xwtfHnnXdevvGNb+Tcc8/Nu9/97lxxxRXZeOPhRU7ThgEAAIbk1ltvzTbbbJONNtoo//iP/zjhfavXXXddnvSkJ+XYY4/NC1/4wlx22WXZd999c/bZZ+cXv/hFkuRXv/pVfvKTn0x4jiVLlqz6+vSnPz1J8oxnPCNnnXVWkuSMM87IXnvtlST50Y9+lN133z3vete7suWWW+aGG254wLEe/vCH57bbbpvwPE9+8pMzZ86cvPvd787LXvayJMlTnvKU3HzzzavC67333psrrrgi999/f2644YYsWrQoJ554Yn7zm9/k9ttvn9Rnty46rwAAwMw3wNY2o/Bnf/ZnefGLX5zPfvazWbRoUR72sIetNmbJkiX51Kc+lU022SSPe9zj8td//dd59KMfnfe85z3Zf//9c//992eTTTbJySefnCc84Qmr/f7dd9+d3XffPffff3/OPPPMJL3Fkl796lfn/e9/f7baaqucfvrpSZK3vvWtueaaa9Jay7777ptddtklX//611cd6wUveEFe8pKX5JxzzslHP/rR1c71spe9LG9961vz4x//OEmy6aab5uyzz86xxx6bW2+9NStWrMgb3/jG7LDDDnnFK16RW2+9Na21HHfccXnkIx85lM90pWqtDfWAw7ZgwYK2bNmy6S5jdAbdn6oj/+MEAIDpcOWVV2bHHXec7jJGbu7cuVm2bFm23HLL6S5l0ib6M6uqS1prCwb5fdOGAQAA6DzThgEAAGaI5cuXT3cJ00bnFQAAmJG6fgskvzOMPyvhFQAAmHE222yz3HLLLQLsDNBayy233DLhtkGTMfJpw1W1PMltSe5LsmLQm3MBAABW2nbbbXPjjTfm5ptvnu5SGMBmm22Wbbfddr2OMV33vC5qrf1yms4NAADMcJtsskme+MQnTncZjJBpwwAAAHTedITXluQrVXVJVR090YCqOrqqllXVMtMAAAAAmI7wumdrbdckz0vyP6vqWeMHtNZOba0t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\n",
      "text/plain": [
       "<Figure size 1152x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "true_positives_XG=output_XG[:,1][np.where(Y_test[:,1]==1)]\n",
    "false_positives_XG=output_XG[:,1][np.where(Y_test[:,0]==1)]\n",
    "plt.hist(true_positives_XG,alpha=0.5,bins=80,density=True,label=\"True positives\");\n",
    "plt.hist(false_positives_XG,alpha=0.5,bins=80,density=True, label=\"False positives\");\n",
    "plt.legend()\n",
    "plt.xlabel(\"XGBoost BDT output\", fontsize='15')\n",
    "plt.ylabel(\"Events (a.u.)\", fontsize='15')\n",
    "fig=plt.gcf()\n",
    "fig.set_size_inches(16,8)\n",
    "plt.savefig('/home/hep/davide/Rphipi/'+PATH+'/tp_vs_fp_XG.png', format='png', dpi=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "pAUC from NN 0.8580749753611944\n",
      "pAUC from XG Boost 0.8659139890168011\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "threshold_range=np.linspace(0.0,1.,num=30)\n",
    "sig_eps_vals_XG=[sig_eff(true_positives_XG,threshold_range[i]) for i in range(len(threshold_range))]\n",
    "bkg_eps_vals_XG=[bkg_eff(false_positives_XG,threshold_range[i]) for i in range(len(threshold_range))]\n",
    "if task=='TEST':  \n",
    "\n",
    "    \n",
    "    sig_eps_vals_NN=[sig_eff(true_positives_NN,threshold_range[i]) for i in range(len(threshold_range))]\n",
    "    bkg_eps_vals_NN=[bkg_eff(false_positives_NN,threshold_range[i]) for i in range(len(threshold_range))]\n",
    "    \n",
    "    plt.plot(threshold_range,threshold_range, 'black', linestyle='dashed')\n",
    "    plt.plot(bkg_eps_vals_NN,sig_eps_vals_NN, 'r', label=\"NN ROC Curve\")\n",
    "    pAUC_NN=roc_auc_score(Y_test,output_NN)\n",
    "    print(\"pAUC from NN {0}\".format(pAUC_NN))\n",
    "\n",
    "plt.plot(threshold_range,threshold_range, 'black', linestyle='dashed')\n",
    "plt.plot(bkg_eps_vals_XG,sig_eps_vals_XG,'b',label=\"XG Boost ROC Curve\")\n",
    "plt.xlabel(\"Background selection efficiency\", fontsize='15')\n",
    "plt.ylabel(\"Signal selection efficiency\", fontsize='15')\n",
    "pAUC_XG=roc_auc_score(Y_test,output_XG)\n",
    "plt.text(0.69,0.1,\"NN AUC {0:.4g}\\n \\n XGBoost AUC {1:.4g}\\n\".format(pAUC_NN,pAUC_XG), bbox=dict(boxstyle=\"round\", facecolor='blue', alpha=0.10), horizontalalignment='center', verticalalignment='center',fontsize='15')\n",
    "plt.legend()\n",
    "fig=plt.gcf()\n",
    "fig.set_size_inches(8,8)\n",
    "\n",
    "print(\"pAUC from XG Boost {0}\".format(pAUC_XG))\n",
    "plt.savefig('/home/hep/davide/Rphipi/mu/test_'+str(test)+'/roc_comparison_'+str(i)+'.png', format='png', dpi=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "# save XGBOOST model to file\n",
    "pickle.dump(model, open(PATH+\"/XG_\"+str(i)+\"_.pickle.dat\", \"wb\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}