Skip to content

Instantly share code, notes, and snippets.

@cmarinbe
Last active November 15, 2022 15:34
Show Gist options
  • Save cmarinbe/b026d08eaaec20bcef19 to your computer and use it in GitHub Desktop.
Save cmarinbe/b026d08eaaec20bcef19 to your computer and use it in GitHub Desktop.
Checking imbalance effect
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Check that the ROC curve is invariant under imbalance of the test data"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# imports\n",
"import numpy as np\n",
"from collections import OrderedDict\n",
"\n",
"from sklearn import datasets\n",
"from sklearn.cross_validation import train_test_split\n",
"from sklearn.metrics import roc_curve, auc\n",
"\n",
"from scikit_learn.general_tools.compare_train_test import compare_train_test\n",
"from scikit_learn.imbalance.imbalance_base import plot_rocs\n",
"\n",
"# functions\n",
"def build_bdt(min_samples_leaf, max_depth=3,\n",
" alg=\"SAMME\", n_estim=100, learn_r=0.1):\n",
" from sklearn.tree import DecisionTreeClassifier\n",
" from sklearn.ensemble import AdaBoostClassifier\n",
" dt = DecisionTreeClassifier(max_depth=max_depth,\n",
" min_samples_leaf=min_samples_leaf)\n",
" bdt = AdaBoostClassifier(dt,\n",
" algorithm=alg,\n",
" n_estimators=n_estim,\n",
" learning_rate=learn_r)\n",
" return bdt\n",
"\n",
"def do_plots(y_test, pred, y_red, pred_red):\n",
" # plot bdt outputs\n",
" plt = compare_train_test(y_test, pred, y_red, pred_red,\n",
" labels=('full', 'reduced'))\n",
" plt.show()\n",
"\n",
" # plot rocs\n",
" colors = OrderedDict([('full', 'b'),\n",
" ('reduced', 'r')])\n",
"\n",
" plot_rocs([y_test, y_red],\n",
" [pred, pred_red],\n",
" colors)\n",
"\n",
"def roc_imabalance(n, rdm_state, plots=False):\n",
" # create random balanced sample\n",
" X, y = datasets.make_classification(n_samples=n,\n",
" random_state=rdm_state)\n",
"\n",
" # split samples\n",
" X_train,X_test,y_train,y_test=train_test_split(X, y,\n",
" test_size=0.33,\n",
" random_state=rdm_state)\n",
"\n",
" # make samples\n",
" n_sig_test = X_test[y_test==1].shape[0]\n",
" n_bkg_test = X_test[y_test==0].shape[0]\n",
"\n",
" #as samples are shulfed we keep the first 100\n",
" X_bkg_red = X_test[y_test==0][:1000,:]\n",
" y_bkg_red = y_test[y_test==0][:1000]\n",
" n_bkg_red = X_bkg_red.shape[0]\n",
" X_red = np.concatenate((X_test[y_test==1], X_bkg_red))\n",
" y_red = np.concatenate((np.ones(n_sig_test),\n",
" np.zeros(n_bkg_red)))\n",
"\n",
" print \"n sig test is: %s\" %n_sig_test\n",
" print \"n bkg test is: %s\" %n_bkg_test\n",
" print \"n bkg reduced is: %s\" %n_bkg_red\n",
" \n",
" # build bdt\n",
" bdt = build_bdt(0.05*len(X_train))\n",
"\n",
" # train bdt\n",
" bdt.fit(X_train, y_train)\n",
" \n",
" # apply to full test set\n",
" pred = bdt.predict_proba(X_test)[:,1]\n",
" pred_red = bdt.predict_proba(X_red)[:,1]\n",
" \n",
" # plots\n",
" if plots:\n",
" do_plots(y_test, pred, y_red, pred_red)\n",
" \n",
" # get roc area\n",
" areas = []\n",
" for y, dec in zip([y_test, y_red], [pred, pred_red]):\n",
" fpr, tpr, thresholds = roc_curve(y, dec)\n",
" roc_auc = auc(fpr, tpr)\n",
" areas.append(roc_auc)\n",
" \n",
" return areas"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"## Toy 0\n",
"n sig test is: 16416\n",
"n bkg test is: 16584\n",
"n bkg reduced is: 1000\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEPCAYAAACtCNj2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd8VFX6+PHPyaQXUkB6QhBpriIuCIKSZJGmgKJ817Lq\ngnUtFMuKSmQNPw3u6ooKVnRFsa8FWUECrG4IKBKsgAECgYRAgrRJIZA2Ob8/ZjJkkskwSaYled6v\nV17M3Hvuuc/chPvMvfcUpbVGCCGEAPDzdgBCCCF8hyQFIYQQVpIUhBBCWElSEEIIYSVJQQghhJUk\nBSGEEFZuSwpKqTeVUr8ppbbVWz5TKbVDKbVdKfUPd+1fCCFE07nzSmEpMKHuAqXUH4ArgUFa6/OA\nf7px/0IIIZrIbUlBa70BMNZbfDfwlNa6ylLmiLv2L4QQouk8/UyhL5CglPpOKZWulBrq4f0LIYRw\nwN8L+4vWWl+slLoI+DdwtodjEEII0QhPJ4UDwGcAWustSqkapVRHrfWxuoWUUjIgkxBCNIPWWrVk\ne0/fPvocGA2glOoHBNZPCLW01j7/8/jjj3s9BolT4mytMUqcrv9xBbddKSilPgASgY5KqXzgb8Cb\nwJuWZqqVwJ/dtX8hhBBN57akoLW+oZFVN7trn0IIIVpGejS3QFJSkrdDcIrE6VqtIc7WECNInL5I\nueo+lCsppbQvxiWEEL5MKYVu4YNmT7c+Em2cUi36exQ+Qr6UtV+SFITLyQmldZPE3r7JMwUhhBBW\nkhSEEEJYSVIQQghhJUlBCAeysrK46KKLrO937drF4MGD6dChAy+++OIZt/fz82Pv3r0ATJ8+nXnz\n5gGwdetWLrnkEvcELUQLyINm4XYp990HRUXu20FUFCnPP+9U0Y0bNzJnzhyysrIwGAwMHDiQ559/\nnqFD7Q/YO2/ePB566CHr+6effprLLruMn3/+uclhKqWsD3EHDRpEVFQUK1euZNKkSU2uSwh3kaQg\n3K+oiJT4eLdVn5Kb61S5kpISJk2axGuvvca1115LRUUFGzZsICgoyG75wsJC0tPT+eCDD6zL8vLy\nGDlyZLNjrdsy68Ybb+S1116TpCB8itw+Eu1GdnY2Simuu+46lFIEBwczduxYzj//fLvl161bx5Ah\nQwgMDARg9OjRpKenM2PGDDp06MDu3btJSkriX//6l3Wbt956i1GjRjkVT2JiIl999RVVVVUt/3BC\nuIgkBdFu9O/fH4PBwPTp00lLS8NorD8xoK1t27bRv39/6/uvv/6aUaNG8dJLL1FSUkLfvn1tbgk1\nVY8ePQgICGDXrl3N2l4Id5CkINqNiIgINm7ciFKKO+64g86dO3PVVVdx+PBhu+WLi4sJDw9vsNyV\nnfMiIiIocufzFiGaSJKCaFcGDBjA0qVLyc/PZ/v27RQUFHDffffZLRsdHU1paWmD5a7s8VtaWkpU\nVJTL6hOipSQpiHarf//+TJs2je3bt9tdP2jQILKzsx3WERYWRllZmfX9oUOHnN7/wYMHqaystLlF\nJYS3SVIQ7cauXbtYuHAhBw8eBCA/P58PPviAESNG2C0/ZswYfvzxRyorK22W1719NHjwYD777DNO\nnTrFnj17bB4611f/ttP69eu57LLLCAgIaO5HEu6Qng4pKeafpKTTr9PTvRiU50iTVOF+UVFONxtt\nbv3OiIiIYPPmzSxcuJCioiKioqKYPHkyzzzzjN3yXbp0YfTo0Xz++edce+211uV1bx/df//9bNmy\nhS5dunDBBRdw00038dVXX9ktW/+h9Hvvvcfdd9/t9McUHpKUREZZGWsXLcJ//Xqqg4IYN2sWCe1k\nTgWZT0G4lGU8d2+H4TI7duxg2rRpZGZmurTerVu3cvfdd/PNN9+4tF5XaGu/w6bKWLWKNbNnk5qT\nY12W3KcP4194gYSJE70Y2Zm5Yj4FSQrCpdr7CaUtaI+/w9LSUl564gk4cYKtK1fyfn5+gzI3xsZy\n/qRJDEhMZMp113khyjNzRVJw2zMFpdSbSqnflFLb7Kx7UClVo5SKcdf+hRCiKfyPHuW+mBjOaaR1\nWR+lGG8yUXXihIcj8yx3PmheCkyov1ApFQuMBfLcuG8hhGgSBQT7+1Pjb/9Rqw4IIMBg8GxQXuC2\npKC13gDY6zK6EJjjrv0KIURLjBs+nOToaJtlc6OjGTtsmJci8iyPtj5SSl0FHNBab5Up/4QQvigh\nMBC6d2ceYDh5ElNoKBO6dychMBD7PVraFo8lBaVUKDAX860j62JP7V8IIZwSH09CfDwJ9tY1MiRK\nW+LJK4U+QDzwi+UqoSfwg1JqmNa6wZFOSUmxvk5KSiKpnbQRFkIIZ6Wnp5Pu4k51HksKWuttQJfa\n90qpfcAQrfVxe+XrJgUhhBAN1f/CPH/+/BbX6c4mqR8A3wL9lFL5Sqlb6hVxS0Podt5DXbjBa6+9\nxv333299v3z5cmJjY4mIiOCXX35xuG16ejqxsbHW9/Hx8Xz99dcAvPjiizzyyCPuCVqIZnLblYLW\n+oYzrD/bHftNSoKysgwWLVrL+vX+BAVVM2vWOJKS7N4hFB5w330p7p6Nk+efT3GqbHx8PIcPH8Zg\nMBAQEMDIkSN59dVX6dmzp93ylZWVpKamsnnzZuuyv/71r7z88stMnjy5ybHWbWBxxx13cM455/Dg\ngw9y1llnNbkuIdyhzY19tGpVBrNnryEnJxWAtWshJycZgIkTJTF4Q1ERxMenuK3+3Fzn61ZKsXLl\nSkaPHk1FRQX33HMPM2fOZPny5XbLr1ixgoEDB9KtWzfAPKjd/v37Offcc1scd1BQEJdffjnLli3j\nwQcfbHF9QrhCmxslddGitdaEUCsnJ5XFi9d5KSLhq4KCgpg6dSpZWVmNllm9ejWJiYkAVFRUEBER\ngclk4oILLqBv374A+Pn5sXfvXus206dPZ968eU7FkJSUxKpVq1rwKYRwrTaXFCoq7F/8lJe3/Z6I\nwjm14/qcPHmSjz76qNGhswG2b99une8gKCiIE5YhDrZu3cru3bvtbtOUKToHDBhwxucSQnhSm7t9\nFBRUbXd5cLDJw5EIX6S1ZsqUKfj7+1NWVkbnzp1JS0trtHxRURERERHN2o8zIiIiKC4ubnL9QrhL\nm7hS+Omnn3n++Xd4/vl3iIvzp2PHmTbrO3acQWysgZdeeqdJM2OJtkcpxYoVKzAajVRUVLB48WIS\nExP57bff7JaPjo6mpKTEbfGUlpYSGRnptvqFaKo2kRSOHTvOpk3h7N07gpCQmxgx4hLi4h4EUoiL\ne5ARIy4lJOQmNm8+QXl5ubfDFT5CKcXVV1+NwWBodF4DZ6bkDA0N5eTJk9b3hYWFTt8+2rFjB4MH\nD3Y+aCHcrE0kBYDQ0I7ExJxDSck5lJZeT+/ez9KrVwq9ez9Laen1lJScQ2BgiLfDFD6g9taO1tp6\n1TBw4EC7Za+44grWr1/vsL7Bgwfz3nvvYTKZSEtLIyMjw+lY1q9fz+WXX+588EK4WZt7phAfb/6x\n58ABT0YiakVFNa3ZaHPqb4rJkydjMBhQShEfH8+yZcsaTQqTJk3ivvvuo7Cw0Nostf5VwAsvvMC0\nadN46aWXmDJlCldffbXN+sauGsrLy1m9ejWpqal21wvhDW0uKQjf42zHMk/Yt29fk8oHBATw2GOP\n8fTTT/Pcc88BYDLZNloYMmQI27fbHz8zKSmJ/fv3293/G2+8wY033igd14RPkaQgxBnccccdbql3\nxowZbqlXiJZoM88UhBBCtJwkBSGEEFaSFIQQQlhJUhBCCGElSUEIIYSVJAUhhBBW0iRVeEZ6+unp\n79LTzbMhgflfZ+ffdkUdQgiHJCkIz6h74laqefOjuqKOJsrKymLatGls2bLFJfWlpKSQk5PDO++8\n45L6nPHWW2/xr3/9iw0bNlBRUcHgwYPZsGEDnTp18lgMovWQ20eiXdm4cSMjR44kKiqKjh07cuml\nl/L99983Wn7evHk89NBDLtu/swPluUtQUBC33norf//7370ah/Bdbk0KSqk3lVK/KaW21Vn2jFJq\nh1LqF6XUZ0opGTe4nchYtYrHxo8nBXhs/HgymjHjWEvqKCkpYdKkScyePRuj0cjBgwd5/PHHCQoK\nslu+sLCQ9PR0pkyZYnd9dbX9uTt83Q033MDbb79NVVWVt0MRPsjdVwpLgQn1lq0Ffqe1vgDIBh51\ncwzCB2SsWsWa2bN5cu1aUoAn165lzezZTTqpt7SO7OxslFJcd911KKUIDg5m7NixnH/++XbLr1u3\njiFDhhAYGGhdFh8fz9NPP82gQYOIiIigpqaG7777jpEjRxIdHc3gwYNtRlXdt28fiYmJdOjQgXHj\nxnH06FHruvT0dGJjY232GR8fz1dffQWYx1hasGAB55xzDh06dGDo0KEcsIzquHPnTsaOHUvHjh0Z\nMGAAH3/8sbWOY8eOceWVVxIZGcnw4cPJycmx2UfPnj2Jjo5m06ZNTh23JklPJ+NPf+KxPn1IiYri\nsT59yPjTnzxyq0+4hluTgtZ6A2Cst2yd1rrG8nYz0NOdMQjfsHbRIlLrnZxSc3JYt3ixx+ro378/\nBoOB6dOnk5aWhtFodFh+27Zt1qk46/rwww9ZvXo1RUVFFBYWMmnSJP72t79hNBr55z//ydSpUzl2\n7BgAf/rTn7jooos4duwY8+bN4+2333Z4C6nuVJ4LFy607qukpISlS5cSGhpKWVkZY8eO5aabbuLI\nkSN8+OGH3HPPPezYsQOAe++9l9DQUA4dOsSbb77J0qVLG+xz4MCBbpkGNKOsjDWZmTy5dy8pxcU8\nuXcvazIzySgrc/m+hHt4+5nCrcCXXo5BeIB/RYXd5YYmTHrU0joiIiLYuHEjSinuuOMOOnfuzFVX\nXcXhw4ftli8uLiY8PNxmmVKKWbNm0aNHD4KCgnj33Xe54oormDDBfEE8ZswYhg4dyqpVq9i/fz/f\nf/89TzzxBAEBAYwaNYrJkyc7/XnfeOMNUlNT6du3LwDnn38+MTExrFy5kt69ezNt2jT8/PwYPHgw\n11xzDR9//DEmk4nPPvuM//f//h8hISH87ne/Y9q0aQ2mB42IiKCoqMjpWM6krKyMsrIyvnzuObuJ\ne/Xzz1NWVmYzGZHwTV5rfaSUSgYqtdbv21ufkpJifZ2UlESSNDls1aobuW9vCg72aB0DBgxg6dKl\nAOzatYubbrqJ++67j/ffb/hnGB0dTWlpaYPldW/55OXl8fHHH/PFF1+cjrO6mtGjR1NQUEB0dDQh\nIacnd+rVqxf5+flOxXrgwAH69OnTYHleXh6bN28mOjraZp9//vOfOXr0KNXV1TYxxsXFNaijtLTU\nZvuWevGJJ1C//cbhRoYQ/23bNl6cMYPwvn25d+5cl+23vUtPTyfdxbfmvJIUlFLTgSuAyxorUzcp\niNZv3KxZJOfk2HyLnNunDxNmznSwlevrqKt///5MmzaNJUuW2F0/aNAg3n777QbL696KiYuL4+ab\nb7ZbR15eHkajkZMnTxIaGmpdZjAYAAgLC7P55mwymThy5Ij1fWxsLHv27OHcc8+1qTcuLo7ExETW\nrl3bYJ8mkwl/f3/2799vvfVVdz6HWjt27OCvf/2r3c/dLKWlzOjenQVhYXZX9wgP59ZOnfi3XCm4\nVP0vzPPnz29xnR6/faSUmgA8BFyltZYJk9uJhIkTGf/CC8yztByaN348E154gYSJEz1Wx65du1i4\ncCEHDx4EID8/nw8++IARI0bYLT9mzBh+/PFHKisrG63zpptu4osvvmDt2rWYTCbKy8tJT0/n4MGD\n9OrVi6FDh/L4449TVVXFxo0bWblypXXbfv36UV5ezpdffklVVRVPPvkkFXVukd1+++3MmzePPXv2\noLVm69atHD9+nEmTJpGdnc27775LVVUVVVVVbNmyhZ07d2IwGLjmmmtISUnh1KlTZGVlNXiOcfDg\nQY4fP87FF1/s1HFrinHDh5Nc7wpkbnQ0Y4cNc/m+hHu49UpBKfUBkAh0UkrlA49jbm0UCKyz/KFu\n0lrf4844hG9ImDjRfAJXCtLSPF5HREQEmzdvZuHChRQVFREVFcXkyZN55pln7Jbv0qULo0eP5vPP\nP+faa6+1W6Znz56sWLGCOXPmcMMNN2AwGBg+fDgvv/wyAO+//z7Tpk0jJiaGESNGMG3aNOu9/MjI\nSF5++WVuv/12TCYTc+bMsbnt88ADD1BRUWFttTRw4ECWL19OTEwMa9eu5YEHHuCBBx6gpqaGwYMH\ns3DhQgBefPFFbrnlFrp27crAgQO59dZbbW4xvP/++0yfPp2AgIAmHT9nJPTrB8C8zEwMOTmY+vRh\nwrBhJPTrxxF52NwqqPoPoHyBUko3Ja7//vdr3nvPn169EhyWO3DgLR57LIn4xiZxFi2mlGrwUNNO\nIWjp350r6nDCjh07mDZtGpmZmW7flyc406PZqd9hPf+4915mRkURevAg5OaaF+bmnp4wPT6eI2ed\nxb+Dgrj3ySebHb+7lJaWsmT2bB608/ylru2HD7NjyBD+eNttHoqsaSy/uxb1kJRhLoRn1B23KDER\nap8ZNXfso+bW0UQDBw5sMwkBzD2aa5uuukV8/OlEUJ9cKbQKkhSEZ7jixC0D3wnhdt7upyCEEMKH\nSFIQQghhJUlBCCGElSQFIYQQVpIUhBBCWEnrI+ERMhunaHPS08lYsoS1mzfjf+wY1R07Mm74cBLu\nvLNV/0FKUhAe0Upn4wTgtddeY+fOnTz33HMuqS8pKYmbb76Z2zzYAWr69OnExsbyxBNPsHXrVu6+\n+26++eYbj+2/LaodJjx1717zguJikpWCG2/EcTda3ya3j0S7Eh8fT2hoKBEREcTExDBp0iTrxDX2\nVFZWkpqaypw5c1wWQ905Ezyl7j4HDRpEVFSUzThMwnkVFRUcPXqUlf/8p91hwlc9+yxHjx7l1KlT\nXoqwZSQpCI9ZtSqD8eMfA1IYP/4xVq3K8HgdSilWrlxJaWkphYWFdOnShZkORlldsWIFAwcOpFu3\nbnbXt6YpOesOXXHjjTfy2muveTGa1inIYKBo82Y+fPhhjI30DD+elcUbDzzA1q1bPRyda0hSEB6x\nalUGs2evYe3aJ4EU1q59ktmz1zTppO6KOuoKCgpi6tSpZGVlNVpm9erVJCYmWt/n5ubi5+fHm2++\nSa9evRgzZgwAb775Jueeey4xMTFMmDDBZrjqdevWMWDAAKKiopg5c6bNyTklJYWbb765Qf01NebJ\nCY8fP84tt9xCjx49iImJ4eqrr7aWXblyJYMHDyY6OppLLrmEbdusU6Hz008/8fvf/54OHTpw/fXX\nU15vIqLExES++uormae5ifp27MiM3r2ZERtLl0aGCe8aHs4gy/DorZEkBeERixatJScn1WZZTk4q\nixev82gdcPob88mTJ/noo48aHTobYPv27Xan5MzIyGDnzp2kpaWxYsUKnnrqKZYvX87Ro0cZNWoU\nN9xwAwBHjx5l6tSpLFiwgGPHjtGnTx+be/lnuo108803U15eTlZWFocPH+aBBx4AzCf92267jddf\nf53jx4/zl7/8hSuvvJKqqioqKyuZMmUK06ZNw2g08sc//pFPP/3UZl89evQgICCAXbt2OX/ghI22\nOky4PGgWHlFRYf9Prbzc+W9UrqhDa82UKVPw9/enrKyMzp07k+ZgCO6ioiIiIiIaLE9JSbHOqPbq\nq6/y6KOPWpPHo48+yoIFC9i/fz/p6emcd955XHPNNQDcd999PPvsszbxNKawsJC0tDSOHz9OZGQk\nAKNGjQJgyZIl/OUvf+Giiy4C4M9//jMLFixg06ZNgPm21uzZswGYOnWqtVxdrp6Ss71xNEz4l3l5\nXo6u+SQpCI8ICrJ/7z042OTROpRSrFixgtGjR6O15vPPPycxMZGsrCy6dOnSoHx0dDQlJSUNltef\nknP27Nk8+OCDNmUOHjxIYWEhPXv2bHRbR/Lz84mJibEmhLry8vJYtmwZixcvti6rqqqisLAQrTU9\nevSwKd+rV68GCai0tJSoqCinYhF25OaSUFBAQs+eUF0NPXtCQQEEBpqbx7VScvtIeMSsWePo0yfZ\nZlmfPnOZOXOsR+uoSynF1VdfjcFgaLR55qBBg8jOzra7ba24uDiWLFmC0Wi0/pSVlTFixAi6detm\nMyez1trmfXh4uM2UnIcOHbK+jo2N5fjx4xQXFzfYf1xcHMnJyTb7PHHiBNdddx3dunWzzi5XKy8v\nr8Hsa5WVlXZvjQknxcefbic9ffrp1618vhZJCsIjJk5M4IUXxjN+/DzMLYfm8cILE5g40fkW3a6o\nA07fstFas2LFCoxGIwMHDrRb9oorrmD9+vUO67vrrrtYsGCB9YF1cXExH3/8sXX7X3/9leXLl1Nd\nXc2iRYtsTvyDBw8mIyOD/Px8iouLeeqpp6zrunXrxuWXX84999xDUVERVVVVZGSYH6rfcccdvPrq\nq2RmZqK1pqysjFWrVnHixAlGjhyJv78/ixYtoqqqis8++4wtW7bYxLx+/Xouu+wyt8y+Jlq3MyYF\npdSlSqlwy+ublVILlVK93B+aaGsmTkwgLe0JIIW0tCeafDJ3VR2TJ08mIiKCyMhI5s2bx7JlyxpN\nCpMmTWLnzp0UFhZal9V/ODxlyhQefvhhrr/+eiIjIzn//PNZs2YNAJ06deLjjz/mkUceoVOnTuzZ\ns4dLL73Uuu2YMWO47rrrGDRoEBdddBGTJ0+2qf+dd94hICCAAQMG0KVLFxYtWgTAkCFDeP3115kx\nYwYxMTH07duXZcuWARAQEMBnn33GW2+9RceOHfn3v//N1KlTbWJ+7733uOuuu5p87ETbd8bpOJVS\n24BBlp+3gDeAa7XWiY62a1FQMh1nq+XMVI6taDZOAF5//XWysrJc1qPZ287Uo7lF03E6uPI4UlbW\n6qfjdNaXeXl0vOsuhg8f7pL6nOWp6TirtdZaKTUFeElr/YZS6oz985VSbwITgcNa6/Mty2KAj4Be\nQC7m5CLNH9qBVjobJ2C+VdOWDBo0SIa4EI1yJimUKqXmAjcBo5RSBsCZG5FLgcXAsjrLHgHWaa2f\nVko9bHn/SBNjFq2QzMYpROvgzIPma4Fy4Fat9SGgB/DMmTbSWm8AjPUWXwm8bXn9NjDF+VCFEEK4\nmzNXCvdrrR+ufaO13q+UOq+Z++uitf7N8vo3oGHDcCGEEF7jTFIYBzxcb9nlQIuGjbQ8p2j0aVZK\n7Q1jzEMNJ8l9AyGEsJGenk66i8eQbzQpKKXuBu4B+lhaINWKAJr7lOo3pVRXrfUhpVQ34HBjBesm\nBSGEEA3V/8I8f/78Ftfp6ErhfWA18HfMVwq1zZxKtdbHmrm//wDTgH9Y/v28mfUIH+bpuQKEEK7j\nKClorXWuUupewOY2j1IqRmt93FHFSqkPgESgk1IqH/gb5gTzb0uT1lzMD7F9Vno6LFmSwebNazl2\nzJ+OHasZPnwcd96ZIK1gGnGm9u0lJSXcd9/rxMU96LDc4cPbGTJkB7fd9kdXhieEOANHSeEDzP0M\nfqBeUrDo7ahirfUNjawa41xo3ldWlkFm5hr27jUP11xcDEolc+ONQKuecE8IIexrNClorSda/o33\nWDQ+pvHx++c1a3gFYSs3F77/PoOCgrWcPOlPaGg13buPY+jQBEJDvR2dEO2TU0NnK6V6YO6FbC2v\ntW7edFetiCvG7xeNq6zMoKBgDUajOfFWVAAkU1kJoaExXo1NiPbqjElBKfUP4DogC6g7cH2bTwqu\nGL9fNG7z5rXWhFDLaEwlM3Me48Zd56WohGjfnLlSuBror7WucHcwvmbWrHHk5CTb3EIyj98/wYtR\ntR0mk/0/v+pquRITwlucSQo5QCDQ7pJCWFgC5ulW53H0qIFOnUwMGzaBsDB5nuAKBoP9KzF/f7kS\nE8JbnEkKp4CflVJfcToxaK31LPeF5RvMA7AlIC2N3GP48HEYjck2t5Cio+cybJhciQnhLc4khf9Y\nfury0Ej2oi0LDEyge3eAeZw8aSA01ET37hMIDEwAtns5OiHapzMmBa31Wx6Iw+OkY5r3xcdDfLz9\nK7HDjQ6AIoRwJ2daH+2zs1hrrc92QzweIx3ThBCiIWfmU7iozs8o4AXgPXcG5QmNd0xb56WIhBDC\n+5y5fXS03qLnlVI/AvPcE5JnSMc0IZooPZ2MJUtYu3kz/seOUd2xI+OGDyfhzju9HZlwIWduHw3h\n9INlP2Ao0OrPnNIxTYimySgrY01mJql795oXFBeTrBSWe66ijXCm9dGznE4K1bSC0U2dIR3ThDiz\nlZ9+yr7vvwcg88MPeSc312Z9ak4Of545kz7DhkFUlBciFK7mzO2jJA/E4TG5ubmcPHmSI0fi6N9/\nOJWVczAag4iOrqB//0s5ciSOrKwsBg4cKPMCiHav9LffuPjoUc6OjuZQtf2r69iqKmbExRHs79RQ\nasLHtavfota9eOedw9RO+Na1K3TtOrROiXI2bMhk48Ysliz5myQFIYCIoCA6hoaiAgPtrvezrBdt\nQ7tKCrGxf3CqXG5uy6e0E6KtGTd8OMlGI6lGo3XZ3OhoJpjHghFtRLtKCkKI5ksIDITu3ZkHGE6e\nxBQayoTu3c3LRZvhTOujH4A3gfe11sYzlRdCtFHx8STEx0vXzjbOmc5r1wM9gC1KqQ+VUuOV3GwX\nQog2yZnWR7uBuUqpx4BJmK8aapRSbwIvaK2PN3WnSqlHgZuAGmAbcIuvzdfw/fffn/FBc1hYGOee\ne66HIhJCCPdzdjrOC4BbgMuBT4H3gUuBr4HBTdmhUioeuAMYqLWuUEp9hPlq5O2m1ONONTVDefXV\nIw7LVFSc4PzzSyUpCOFOjnpRy8iVbuHsM4Vi4A3g4Trf6L9TSl3SjH2WAFVAqFLKBIQCB5tRj9uc\nffbEM5YpLs6npmaNB6IRov1y1Itanm24h8OkoJTyAz7VWi+wt15rfXVTd6i1Pq6UehbYj3kCnzVa\n6/82tR4hRNt07NgxDhw4AMCnqam8kJNjsz41J4fZCxYQ2bMnsbGxxMTEeCPMNsthUtBa1yilpgJ2\nk0JzKKURi5mOAAAgAElEQVT6APcB8ZivQD5WSt2otbYZeTUlJcX6OikpiSS5VBSiXcjNzeWbf/6T\nniEhVNdeIdRTnZND+j/+QdLDD7frpJCenk56erpL63TmmcI6pdRfgY+AstqFzXnAbDEU+FZrfQxA\nKfUZMJJ6w3HXTQpCiPald0gIk+Pi+DEszO76mPBw4kJCPByV76n/hXn+/JZ3vHW2Seq9QAbwQ52f\n5toJXKyUCrE0bR0DZLWgPiFEGzVu+HCSo6Ntls2Njmas9KJ2G2eapMa7coda61+UUsuA7zE3Sf0R\nWOLKfQgh2gZHvaiXezu4NsrZJqnnAecCwbXLtNbLmrtTrfXTwNPN3V4I0U446kWdn+/paNoFZ5qk\npgCJwO+AVZj7KmwEmp0UhBBC+CZnnin8H+b7/oVa61uACwCZTUMIIdogZ5LCKa21CahWSkVinowg\n1r1hCSGE8AZnnilsUUpFA69jfjhcBnzr1qiEEEJ4xZl6NCvg75Yhs19VSq0BOmitf/FIdEII93M0\nvpBod5y5UvgSOA9Aa73PveEIITzN0fhCov050zAXWin1g1JqmNY601NBCSHcKz8/n72WJPDR/Pm8\nbGd8oXvnz2fgVVd5IzzhRc5cKVwM3KSUyuP0MBdaaz3IfWEJIdxp//797H7+efpERhKwf7/dMv77\n9/O77Gw6du7s4eiENzmTFMYB9Web0W6IRQjhQXGRkfwhPp6vGhlfqEN4OH/o3dvDUQlvc6ZJ6pNa\n69y6P8CTbo5LCOEhMr6QqMuZK4Xz6r5RSvkDQ9wTjhDC0xyNLyTan0aTglJqLvAoEKKUKq2zqgoZ\nwE6ItsPR+EKi3Wk0KVhmW1uglPq71voRD8bU6qSnw5IlGWzevJZjx/zp2LGa4cPHceedCTKNrBCi\nVXF0pTBAa70T88xov6+/Xmv9o1sja0XKyjLIzFzD3r2pABQXg1LJlmbe8v1LCNF6OHqm8CBwB/As\n9lsb/cEtEbVCixatJScn1WZZTk4qixfPY+JESQpCiNbD0e2jOyz/JnksmlaqosL+YSwvN3g4EiGE\naBln5lMIAe4BLsV8xbABeEVrXe7m2HyeyWSipKQEg+GU3fX+/uWUlJQQGBhIcHCw3TJCCOFLnOmn\nsAzzrGuLgBcxT7bzjjuDag38/Azs2HGC++57naKicAIDH7RZHxj4AEZjGDNmvMT//pfhpSiFEKJp\nnOmn8Dut9bl13n+tlMpyV0CtRUREdyIizIkgLg76988gM3Me1dUG/P1NDBs2hX79Eti//xtqasrO\nUJsQQvgGZ5LCj0qpEVrrTQBKqYuBH1qyU6VUFPAG5qsODdyqtf6uJXV6W79+CfTrJw+VhRCtm6Mm\nqdvqlPlGKZWP+QQeB+xq4X5fAL7UWv+fpYe0/cFXhBBCeJSjK4XJln81LhwQzzKl5yit9TQArXU1\nUNzc+tqKvLw8SkpKnCo7cOBA/P2ducgTQoimcdQkNdfyLX671nqAC/fZGziilFoKXID5VtRsrfVJ\nF+6j1UlL+5b1608RHNzBYTmldvDii+dIUhBCuMWZJtmpVkrtUkr10lrnuXCfvwdmaK23KKWeBx4B\n/la3UEpKivV1UlISSW18vAiTCWJiRtKpk+P8u3//PzwUkRDC16Wnp5Oenu7SOp35uhkD/KqUysR2\nkp0rm7nPA8ABrfUWy/tPMCcFG3WTghBCiIbqf2GeP39+i+t0JinMs7Os2c8UtNaHlFL5Sql+Wuts\nYAzwa3PrE0II4TpnTApa6/S675VSo4AbgPUt2O9M4D2lVCCQA9zSgrqEEEK4iFNPKy2jpN4AXAvs\nAz5tyU611r8AF7WkjrYuO9s8FLfJ5I/BYB6Ku7n9IFatymDRorVUVPgTFFTNrFnjZKA+IYRdjvop\n9MecCK4DjgAfA0oGyHO/DRsy+PbbNZSXnx55taAgmZEjoVevptX11FMZPPPMGozG03Vt2ZLMQw/B\no49KYhBC2HI09tEOzK2ExmutE7TWiwGTZ8Jq33Jz19okBIDy8lTy8tY1ua709LU2CQHAaExl/fqm\n1yWEaPscJYVrgFNAhlLqVaXUZTTsxCbcwGSyfwFXXd30obhlWG8hRFM0mhS01p9rra8DzsM8XPb9\nwFlKqVeUUuM8FWB7ZDBU213u79/0C7WgIPt1BQfLRZ8QoqEzDp2ttT6htX5Paz0JiAV+wk6/AuE6\nw4ePIzo62WZZdPRchg0b2+S6Zs0aR58+tnX16TOXmTObXpcQou1r0lgJWuvjwBLLj3CTwMAEuncH\nmMfJkwZCQ0107z6BwMAEYFOT6goLS2DYMHNdR48a6NTJxLBhEwgLk4fMQoiGZAAdHxQfD/HxCUDD\nE/f+/U2rKykJkpLs1yWEEPU5M/OaEEKIdkKuFIQQ7UrGqlWsXbQI/4oKqoOCGDdrFhcmyJV0LUkK\nHia9i4XwnoynnmLNM8+QajRalyVv2UL5rFlejMq3SFLwIEe9iyMjvRiYEG3Yt998Q/mpUwB8/Omn\nvFInIQCkGo3c9cUX9L3gAm+E53MkKXjAJ59sYvnyzaSlZWE0fmCzzmhM5aWXbiApaQBRURd6KUIh\n2q4tK1YwoKCAkIAAgg4csFsm+OBBLrlQ/v+BJAW3i40dgdbDATAYnrBbxmDox9lnJ6OUPPcXwh2G\n9ehBdEgIa8PsTwcfER7OxT17ejgq3yRJwc2U8rOe7BvrkRwQUIOfn+t+FdXV1RjrXSI3Jjg4mIiI\nCJftWwhfNi4+nuSCAlLLy63L5gYHM6GpI022YZIUPCg+fhwFBck2g90FB8+lV68JLt2P0WgkOflV\nTKZoh+UqK8u56qr+/N//TXbp/l3l+PFjfPfdd2csFx8fT9euXT0QkWjtEkaNgi5dmJeZiaG6GpO/\nPxOGDSOhXz9vh+YzJCl40KhRCXTpApmZ86iuNuDvb+5d3Nx5EhwxmWKIjb3XYZmCgh+oqSlw+b5d\nISSkI7/+Gk9WVpHDcidO7OOvf1WSFITTEvr1kyTggCQFD+vXL8EtSaCtiYjoRkREN+v7xiYdysv7\n0otRCtH2SFIQPs/RpENxcV4MTIg2SJq7CJ/nykmHhBCOeS0pKKUMSqmflFJfeCsG0Tq4ctIhIYRj\n3rx9NBvIAqQ9pHDIlZMOtTf2xvlJmDjR22EJH+aVpKCU6glcAaQCD3gjBtF6OG7Ke8J7gfm4xsb5\n4aGHMMgAcKIR3rpSeA54COjgpf2LVsRRU15pfWTryJEjrPnkE6iq4utly3jTzjg/ty5bxoXV1fT3\nUozCt3k8KSilJgGHtdY/KaWSGiuXkpJifZ2UlERSUqNFRTsgTXmdU15eTtGmTYyPjGRrSYndMp1K\nSphw+DDRnTt7ODrhaunp6aSnp7u0Tm9cKYwErlRKXQEEAx2UUsu01n+uW6huUhBCOC84IIC+HTsS\nGBxsd31QSAh9O3b0cFTCHep/YZ4/f36L6/R46yOt9VytdazWujdwPfB1/YQghGi5cfHxJNdLDHOD\ngxkr4/wIB3yh85r2dgCtlUzYIxyRcX5Ec3g1KWit1wPrvRlDa+Vowp7bbx/oxciEL5FxfkRTSY/m\nVio9fa1NQgDzhD3r10svXyFE80lSaGXKyuCxx14hK+uQ3fW//lrIU08t4+RJDwcmhGgTfOGZgmiC\n3r3vAjTV1X+3u766+iwCA28jPr595nt5ziJEy0hSaGWCgyMB+MMfriAtLdnmFlJ09Fz+8IfLCQ6O\n8lZ4XrVqVQazZ68hJ+f0McnJSQaQxCCEkyQptFK1HblcOWFPa/+WnZKy1iYhAOTkpDJ//rxW9TmE\n8CZJCq2YK3v5OmrN9OijreOEGhZm/885NFRGUxXCWe3zxrNooC20ZgoKsj+aanCwjKYqhLMkKQgA\nKirsf8suL28937KTksYRHZ1ssyw6ei6JiWO9FJEQrY/cPmrnTpw4wf79+zEay+yuNxpPsn//fjp2\n7EhYWJiHo2uaRx9NYNAgWLx4HuXlBoKDTcycOUGeJwjRBJIU2rHAwDA2bDjJN9+so3PnQCIiZlJa\nuti6PiJiBp07R/LYYx/y4IPjueCCC7wYrXMmTkyQJCBEC0hSaMc6dRpAp04DAIiNhbPOyqjXmula\n+vVLID9/uZcjdezIkSPs3r37jOXi4uIICgryQERCtF6SFIRVa5yzIDDwLJYv3wVsdliupmY/Cxbc\nQrdu3TwTmBCtlCQF0ap163YRcNEZy+Xnv+r+YFxE5lUW3iRJQQgf4mhe5YRHHz1dThKHcBNJCkJ4\n2erPP+dQdjYAGUuXstTOvMq3vPUWOeHhTLv3XjauXs2a2bNJzcmxlkm2vO49aJDnAhdtkiQF4TLv\nvfcphw6dcFjGZKqmosJDAbUSv+3Zw8DsbLqFh7OrkeFtu5SVsf+HH9BasyYlxSYhAKTm5PDY/Pnc\n+cknngjZJeRqxzdJUhAu88svBygt/QOBgREOy3Xu3Ho6xHlK1/BwekVF4a/tT0QYoDWqqIgnb7uN\ng/n5dssc2L+fpX/7Gz1bQdbNWLWq0audsK5dvRWWQJKCcLEOHWIJCYn2dhit1rjERJLT0myeKcyN\njmZCYqJ1BrXHGulEGBsezuPx8Z4Is9mqq6s5dOgQK5OTedrO1c7Djz3G+Gef9VJ0AiQpCCfU1MD6\n9d/z8885DssVF5cR1T5H7XaZ2hO/o3mVx8XHk1xQQGp5uXXZ3OBgJvTq5fF4m8Lg50dQfj6fJydT\ndMj+JFHGwkKy33uPgUp5ODpRyytJQSkVCywDOgMaWKK1XuSNWMSZRUUNYceOojOW8/M7h4CAUA9E\n1LadaV7lhFGjoEsXh4nDF8WEhHBX375A41c7XcLDuSs21pNhiXq8daVQBdyvtf5ZKRUO/KCUWqe1\n3uGleIQDkZFxREbGeTsMUceZEoeva61XO+2BV5KC1voQcMjy+oRSagfQHZCkIEQ70FqvdtoDrz9T\nUErFAxdypnEKhBBtSmu/2mmrvJoULLeOPgFma61tGrinpKRYXyclJZGUlOTR2ETjsrMz2Lx5LSaT\nPwZDNcOHj7M7ZpKz5YQQzZOenk56erpL6/RaUlBKBQCfAu9qrT+vv75uUhC+Y8OGDL79dg3l5adn\naSsoSGbkSBg1KqHJ5YQQzVf/C/P8+fNbXKdXZl5TSingX0CW1vp5b8Qgmic3d63NiR6gvDyVvLx1\nzSonhPAt3rpSuAS4CdiqlPrJsuxRrXWal+IRTjKZ7P/JVFcbmlXOk/bs2cPRo0cdlvHz8+N3v/ud\nhyISwvd4q/XRRmR+6Fapqqq6keWmZpXzFK3PYenS34DfHJSpISxsDy++6J6kIGP9iNbA662PROuS\nmDiOtLRkjMbTt4aio+eSmDihWeU8JS5uzBnLmEyVHD78T7fs39FYP0L4EkkKoklqWw/ZTts5oUGr\nImfLtWVHjhzh2LFjAKx45BGetTPWz18feYSzr73WG+EJYZckBdFkzk7b6Uy5wuxVFG9eRLCpgnJD\nEJHDZ9Gtn/tvqdhrLtunz8Uu3ce2X34h64036BQWxqkjR+yWOXnkCDE5OYSedZZL9y1Ec0lSEF5T\nmL0Kv7TZfGg8/Q36bmMOheDWxJCdnUFa2hqbW1tGYzLjxlURGenafQ0KCSEhNpbtBvsP2DsaDFzv\n4yObivZFHvYKj6quriZn925ysrMpSXuEV4y2t1ReMeZQuuZRcrKzOdTISJottX79WpuEAGA0ppKR\n8bVb9geWIbGjbYcUnxsdzdjERLftU4jmkCsF4VEmk4mC7duJ9/OjqtL+hDI1FTWYfvmF8j596OqG\nCVcCAuz/2QcEuK+5rDNDYgvhCyQpCI8z+PkRGxlJnrLfbDXEr5qQ0FDs34VvOVc3l3W2qamM9SNa\nA0kKwmsCe03j7pwXeaW8wLrsruDuBMZNc+t+zz8nihOFN1Gi37Uu66Bu5LxzBgGnE4MzJ3uHTU2D\ngtz6OYQt6QfiGpIUhNd06zSCQuCGguUE1VRS4RdIh+5X063TCA6Xlbl0X6WlpZhM5hN+553v877e\nzWIuopwwgiljpt7Jh7uyOBFr7kfh6GR/waWXsmfPHgCWz5nDc3aamj4wZw5DHnkEmS7GM6QfiOtI\nUhBe1a3TCLp1GuH2/ez6+Wc4ehR/gwH/skomcoKJfG9T5s0TleT/spWysjJW/+1vPGXnZD/38ceJ\neest1j/3HOcEBlJl6YdQX+WxY0T87390DQ9322cSkJeXh9aaz+fMYaGd39eDDz9MlzFj5KqtCSQp\niDal0X4PJhP9Q0OJCApq9FlGhF816mQZL82YwW8HD9otc+jAAb589ll6K8WVcXFkNtLUNNpg4Mo4\nma3OneICAshfsYJczEnYnoqjR+lnNBLYo4dHY2vNJCmIVsGZTm6O+j3A6TmBG3uW4R93E4NDfmJO\nr1481sjJvofBwJw6U0aOS0wkOS2NVKPRumxudDQTpKmp2w3p2pUhltffO0jOU3r39lxQbYAkBeHz\nHJ3sy+hLwc6dAMTsfJBPTjXs9/B/n9/Pid6p0KED4OBZRsxQDp80D9rr7Mlempr6BknOriNJQfis\nkuPH+fXHHzFkzOHD4oYn++u/nEPx4JforTU9OnTgN1Vjt56OysS5nTqh6iyz9yzDVFNlfZ3Qrx+b\nDpbQZ0sJpppQDH4nufP8DnZP9tLU1PskObuOJAXhkzoEBdGnogIKCyky2e9472fyo3dZGeGhofgp\nRXFQDJzc26BcSVBHuillp4aGanQN63Nz2ZRfxOIfu1JwaqV13aIfb0f7/8yI2ChiQkI4v0uXJn2m\nVdmFLNpcTIUpmCBDObOGRzKxX7cm1eEuvhybsyQ5u4YkBeGTgv39CfY3/3meospumSBVReew088K\nIrtfw92nCho8K+jQ/Wqn9qmUH5XVCbz5k2bV7h0cO/WGzfqCE2/wz023M/pQTy6N292kpLAqu5DZ\naX7kGD+0Lssx3g0Uev3k68uxCc+TpCB8nrOd3Bz1e3CGnzLQO/r3APj7Fdot4+8XRdfwvsBu6zJn\nvmWnrK8kx7jUZlmO8RXmr7+FiV7+ctuU2Br7rKUVFdgftMSWn1KEBwa6LnjhcpIUhM9rysneVf0e\nwgJPgp3+c+GBpwDYfKCcO377hf3FJ9h0IJbSytPfsjcduJURPb8hLjKcaYOjuTQujiqT/XbylXaW\nOzrx1krbc4hXvy+zlrlraBgTzjGPE2Xw8yM0IMDh56vRmhptPo1XVts/SVdUB1JdU4OfUvgp5fCK\nIiOvgMMnO+BH47fpTLqGvjHlJCcMchib8C6vJAWl1ATgecAAvKG1/oc34hCth6c6udUa3v1cjKce\nwFi+0LosOvh+hnUfSHRwNyKD7gbg632fUlr5is22pZVvssd4N13Dz6ZGZwHQJazI7n66hhcDpwf9\nc3TiXZOTz4nKaPKLi9l8sAullf+2ltlScBvDe2yjR4cIBnWp4oER5zn8fJvy83n9x+OAgaMny+2W\nOXrqIHevLOT686Lo2aEDT208So7xU5syOcZX+PvGqZzX2Z/u4TcTYAhudJ9llUWcqn7fYVzC+zye\nFJRSBuBFYAxwENiilPqP1nqHq/bh7MQtzrZ9b6xMbm468fFJrgrbpbHV9cOGpwjLTXfZRDYtOb4x\nvRqfFjO36GfiowY3Oy5X6tfJfFLNLLiX6poA/P2qGNZ9IP06nWcTZ1lVmN3tyyrDzM8oTCZOVlVx\n55Aw9hy/i71Fr1rL9I76C3f8PpSTVVUEGQwY/PxYtLnYJiGA+cS7OPMGukcEEdvhNtbnfUJp5cs2\nZUor/8W+ons5r3Mix05+wEuZmfy+Wze+2W/k4x01VFYHE+hfzh8H+nFJXDR5xcXACOKjhpPYaztp\nOQ0TYGLcBDTVfLDtAABZR2LsftZfj8TQK6ojHUPNDQKyj25nc0EWpppADH6VDO9+rvV41rUqu5CU\n9N2EBcY5fLjt6ofgzakvPTeXpHYy74U3rhSGAXu01rkASqkPgasAlyQFZyducabcmcrUTQquTkQt\nja1uXYXfPsP35UaH5VwZm6Nyhy57hsam8fClpADmxGDvZFY3ToOqtLutwa8KRQDvb6vi/W3mFlFn\nR5dQbpqMqSYEg98p+kTXsGp3B1Zmb2dgJ0XnsHB2HAmxW1/W4WA6hZpvH5VVhtotc6IyhCD/UA6U\nDGPV7v/SKSSEzIIgmwSy48g9DOvuR2zkOYQHdrN+TrCfAM3MnzXE/zOMNBQSEMo5MeYxo7KPbict\nZy/G8tP7NJ56AIAeHXpal52+IkoAUoDTV0Tjz+lClWWcqtW7D/HQugD2Fp1OlHuO30VFdT6X9+1K\ngMGAv5+ftc4znewbuxLTuoDLzj49+93q3Yd45fsTlFcHEexfQUxINsMtvaINfn4EWjrLtYVWW/V5\nIyn0APLrvD8ADG9Jhbn79pG7G8qMHTj5bSor7UzcMvm/qRw90Y2zuncnNDSUY98s5BM75f747XOY\nQi8gICCAIxue4TM7Za7Z+E/8Iody6pT5/rIrElFMrzHU1Jjb2Rs3Pc+/7ez32u+eJ/iskRgMBofx\nh3UdZV127JuFTCo3NlouICCAkJAQh7F1jB9rHUzOmdhq92svvqmZL0LMLNqKxF79GvmW3ZdeUecB\np++fx0XCJXZGvjCeKmBfUTn7iqDctNnufspNQUQETgKUw0QU7B9O7+gR5BXvYsdRP0orX7QpU1r5\nMjuOzebSXra34hpLgM5+1lrr87Ixli+y/XzlC1m/fzZ/Oq8neUU1PPzfLJb94sehEx9SmxDAfEV0\n+xc3MKX/AUorAwk0BPGfXXDslO2V096iV7lz5Q1c2X8Hs4d35oKuXZ1uQdXYQ/XH06fz5Z6fKa+O\nIL+4lM0Hu1Ja+ZG1TKDfhVz5wc90jwhlzNn+3HxBf4f7VK14qCVvJAVnGik0idF4nMN7MynK28CF\nx7bZLXPWsW389MuL7N1hfgB3YcEWu+UiDmbyw//mQ43mwsIf7ZaJKviB79KSKSz5hRX/nkmvfR/x\nebnt6P+vGHOYsvxWMnufnpTdYbn4P0KN+cQ7oMD+fg0HfyTjy0cB7TD+/33xkPX9Gcv5B4BSLo3N\n0X4jC7awV/2H9LKGDzdzS7eTXvCRna18S/04u0cfh+JrqKkJxs+vnO6RARRUllNQ8GuT6+4cWURp\n5R2UV79uXRbsfzudI0vZUbKFHSVbiI44zvHyhmWiw0utceWWbqe48gK7+yiuONHs43ymz1pcaT9h\nFVecIPPIaipNIew5AcUV9k89xRXB/HzcH4NfAP5+QZSb7NdXbgplu7GU/7fZnEQ35kRzuNR25rwc\n4yvcunI0w+N/pKLafJbeebRXg7oAso9XERRSQ6B/NFt/q6S08l826ytrruKH37ZytKqaAxVHeHdX\nPj/sD+FY2boG+5z2n7Gc272U6aN+ZfjwFn3f9QqltcvP0Y53qNTFQIrWeoLl/aNATd2HzUopzwYl\nhBBthNbauZ6ajfBGUvAHdgGXAQVAJnCDKx80CyGEaB6P3z7SWlcrpWYAazA3Sf2XJAQhhPANHr9S\nEEII4bvstw10I6XUBKXUTqXUbqXUw3bWX6WU+kUp9ZNS6gel1Ghnt/WhOHOVUlst6zK9FWOdchcp\npaqVUlObuq0PxOmRY+lMnEqpJKVUsSWWn5RSjzm7rZfjnFdnnc8czzqx/qSU2q6USm/Ktj4Sp88c\nT6XUX+v8zrdZ/i9FObOtDa21x34w3y7aA8QDAcDPwMB6ZcLqvD4fc58Gp7b1hTgt7/cBMd4+lnXK\nfQ2sBKb64rFsLE5PHcsm/M6TgP809zN6O04fPJ5RwK9AT8v7Tj56PO3G6WvHs175ScB/m7Otp68U\nrB3XtNZVQG3HNSutdd0RZ8KBo85u6yNx1mpRCwAnOHs8ZgKfAEeasa2346zl7mMJzsdpLxZfPJ6O\njpmvHM8/AZ9qrQ8AaK198v+6gzhr+crxrOtPwAfN2dbTScFex7UGk6cqpaYopXYAq4FZTdnWB+IE\nc2P9/yqlvldK3eGtGJVSPTD/8msH56l9gORTx9JBnLWv3X0snYrTEstIy23DL5VS5zZhW1+Is3ad\nrxzPvkCMUup/lnhubsK2vhAn+NbxBEApFQqMB2oHqmrS8fR06yOnnmprrT8HPldKjQLeUUoNcG9Y\nDUNwqlC9OIH+llWXaK0LlVJnAeuUUju11hu8EOPzwCNaa62UUpz+RuPJ1gUtiRM8cyydjfNHIFZr\nfVIpdTnwOeDpga9bGqcvHc8A4PeYm6eHApuUUt85ua2rNDtOrfVu4FKtdYGPHM9ak4GNWuvaURib\ndDw9faVwEIit8z4Wc9ayy3Jw/YEYSzmnt22hZsWplOpoeV9o+fcIsBzz5Zs3YhwCfKiU2gdMBV5W\nSl3p5La+EKenjqVTcWqtS7XWJy2vVwMBSimf+9t0EKdPHU/M317Xaq1Paa2PARnABU5u6wtxorUu\nsPzrC8ez1vWcvnXU1G09/qDZH8jB/MAjEPsPdfpwuqns74EcZ7f1kThDgQjL6zDgG2CcN2KsV34p\ncI0vHksHcXrkWDbhd96lzu98GJDri8fTQZy+djwHAP/F/CA0FNgGnOuDx7OxOH3qeFrKRQLHgJCm\nblv749HbR7qRjmtKqb9Y1r+G+Zvin5VSVcAJzFmv0W19LU7Mg+N/Zr4Lgj/wntZ6rZdibNK2ro6x\npXHioWPZhDj/D7hbKVUNnMR3/zbtxomPHU+t9U6lVBqwFagBXtfaPAGFLx3PxuJUSp2NDx1PS9Ep\nwBqt9akzbdvYvqTzmhBCCCuPd14TQgjhuyQpCCGEsJKkIIQQwkqSghBCCCtJCkIIIawkKQghhLCS\npCBaPaWUyTJc8M/KPIz5CMvyeKXUKaXUj0qpLKXUZqXUNMu6W+oMM1xZZ/jjBS6IZ24Lt0+s/QxC\neJr0UxCtnlKqVGsdYXk9DpirtU5SSsUDX2itz7es6w18BrygtX6rzvb7gCFa6+OujqeZ26cApVrr\nZx3XLeQAAAIXSURBVF0RjxBNIVcKoq2JBOye3LXW+4AHsB3R1iGlVLBSaqnlSuJHpVSSZfl0pdTi\nOuVWWr7h/x0IsVx1vKOU6qXMk5u8a7la+VgpFWLZJrd2TCKl1FDLKJy9gL8A91vquLSZx0GIZvH4\nHM1CuEGIUuonIBjoBox2UPYnzGPZOOtewKS1HqSU6g+sVUr1o+HIkxrQWutHlFL3aq0vBPMtLMwj\nlN6itd6klPoXcA/wrJ060FrnKaVexXylsLAJcQrhEnKlINqCU1rrC7XWA4EJwDIHZZs6IcolwLsA\nWutdQB5NHy47X2u9yfL6XcCZb/+emLhFiAYkKYg2RWv9HdBJKdWpkSIXAllNrLb+CVoD1dj+/wl2\nFFa9umrf163D0fZCeIwkBdGmWCZkMmAePrj+unjgGWBx/XUObAButGzfD4gDdgG5wGBlFovtOPpV\nSqm6t2bjlFIXW17/yVInljqGWl5PrVO+FGj2g2ohWkKSgmgLah/s/oR5/tk/69PN6vrUNkkFPsLc\n8ujtets7aoL3MuCnlNpqqXua1rpKa/0N5knbs4AXgB/qbLME2KqUesdS9y7gXksMkZyednQ+8IJS\nagvmq4baOL4ArrZ8pkuaeCyEaBFpkiqEG9VvFiuEr5MrBSHcT755iVZDrhSEEEJYyZWCEEIIK0kK\nQgghrCQpCCGEsJKkIIQQwkqSghBCCCtJCkIIIaz+PzpNUaZ6X7JQAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116f0a050>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n112nPp9PH3/8ce3cubNmZmbqVVddpQUFBf5trrjiCm3ZsqU2bdpUBw0apEuWLAnL61Jm9+7d2qBB\nA/3hhx/8y6677jq99957g9Y/4YQTdPLkyf7ypEmTtF27dv5yt27d9KOPPvKX77rrLr3++utVVXXZ\nsmWampqqhYWFIcV266236qhRo8ot69q1q37xxRchbV9bKvvdd5cf0qfG9Bm/5fhNXfD5558zcOBA\nnn/+eXbt2kXXrl0Pm74J1aJFizj66KPLLWvRogUffvghu3bt4tVXX+X2229n3rx5/vWbN29m+/bt\nrF27lvHjx/Pss88yZcoUvvzySzZu3Eh6ejo333yzv/4FF1zAqlWr2Lp1K3369OGaa66pNJ6bbrqJ\n9PT0oI/s7Oyg26xcuZKEhAS6dOniX3b88cezZMmSSo+jAZ+AfD4feXl5FBYWAnDOOecwadIk9u7d\ny/r16/noo48477zzAJg9ezYdOnTgwQcfpFmzZvTq1Yv33nuv0mN8+eWXHHfcceWWd+/enQULFlQa\nW30Q2x2/wvwDluP3glDaLBKeR3UFdlbhsmPHDlJSUsotO//88+nUqRMAgwYN4uyzz2bmzJn+9XFx\ncTz00EMkJiaSlJTE+PHjefTRR2ndujWJiYn84Q9/4J133sHnjmuek5NDkyZN/OsWLFjg72QreuGF\nF9i+fXvQx/z584Nus3v3blJTU8stS0lJqfQY5557Ln/961/Ztm0bmzZt4tlnn0VEKCoqAmDMmDEs\nXryY1NRU2rVrR79+/bjkEmcakLy8PBYvXkxaWhobN25k3Lhx/OpXv2L58uWHHGfMmDEAjBgx4pDY\nduzYETS2+iKmO/7QB4U2XqAankd1RWIsoYyMjEM6yI8++oj+/fuTmZlJeno606ZNIz8/37++WbNm\nNGjQwF9evXo1l156qf/MvEePHiQkJLB582ZKS0u599576dKlC02bNqVTp06ISFjvbElOTmbXrl3l\nlu3cufOQf2hlRo8eTe/evcnOzubUU0/l0ksvJSEhgRYtWqCqnHPOOVx55ZUUFRWxbds2CgoKuOee\newBo1KgRiYmJ3H///SQkJDBo0CBOO+00Pvnkk3LHGDduHP/617/48MMPSUxMLLeusLCQ9PT0sLU/\nGmK641eF3g3sPn4vqG9tbtKkCXv27PGXN23aVK399OrVi5UrV/rL+/fv5/LLL+fuu+9my5YtbN++\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10d143990>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"## Toy 1\n",
"n sig test is: 16591\n",
"n bkg test is: 16409\n",
"n bkg reduced is: 1000\n",
"## Toy 2\n",
"n sig test is: 16544\n",
"n bkg test is: 16456\n",
"n bkg reduced is: 1000\n",
"## Toy 3\n",
"n sig test is: 16411\n",
"n bkg test is: 16589\n",
"n bkg reduced is: 1000\n",
"## Toy 4\n",
"n sig test is: 16387\n",
"n bkg test is: 16613\n",
"n bkg reduced is: 1000\n",
"## Toy 5\n",
"n sig test is: 16488\n",
"n bkg test is: 16512\n",
"n bkg reduced is: 1000\n",
"## Toy 6\n",
"n sig test is: 16520\n",
"n bkg test is: 16480\n",
"n bkg reduced is: 1000\n",
"## Toy 7\n",
"n sig test is: 16523\n",
"n bkg test is: 16477\n",
"n bkg reduced is: 1000\n",
"## Toy 8\n",
"n sig test is: 16625\n",
"n bkg test is: 16375\n",
"n bkg reduced is: 1000\n",
"## Toy 9\n",
"n sig test is: 16501\n",
"n bkg test is: 16499\n",
"n bkg reduced is: 1000\n",
"## Toy 10\n",
"n sig test is: 16596\n",
"n bkg test is: 16404\n",
"n bkg reduced is: 1000\n",
"## Toy 11\n",
"n sig test is: 16388\n",
"n bkg test is: 16612\n",
"n bkg reduced is: 1000\n",
"## Toy 12\n",
"n sig test is: 16593\n",
"n bkg test is: 16407\n",
"n bkg reduced is: 1000\n",
"## Toy 13\n",
"n sig test is: 16508\n",
"n bkg test is: 16492\n",
"n bkg reduced is: 1000\n",
"## Toy 14\n",
"n sig test is: 16552\n",
"n bkg test is: 16448\n",
"n bkg reduced is: 1000\n",
"## Toy 15\n",
"n sig test is: 16377\n",
"n bkg test is: 16623\n",
"n bkg reduced is: 1000\n",
"## Toy 16\n",
"n sig test is: 16461\n",
"n bkg test is: 16539\n",
"n bkg reduced is: 1000\n",
"## Toy 17\n",
"n sig test is: 16571\n",
"n bkg test is: 16429\n",
"n bkg reduced is: 1000\n",
"## Toy 18\n",
"n sig test is: 16640\n",
"n bkg test is: 16360\n",
"n bkg reduced is: 1000\n",
"## Toy 19\n",
"n sig test is: 16458\n",
"n bkg test is: 16542\n",
"n bkg reduced is: 1000\n",
"## Toy 20\n",
"n sig test is: 16395\n",
"n bkg test is: 16605\n",
"n bkg reduced is: 1000\n",
"## Toy 21\n",
"n sig test is: 16645\n",
"n bkg test is: 16355\n",
"n bkg reduced is: 1000\n",
"## Toy 22\n",
"n sig test is: 16684\n",
"n bkg test is: 16316\n",
"n bkg reduced is: 1000\n",
"## Toy 23\n",
"n sig test is: 16574\n",
"n bkg test is: 16426\n",
"n bkg reduced is: 1000\n",
"## Toy 24\n",
"n sig test is: 16420\n",
"n bkg test is: 16580\n",
"n bkg reduced is: 1000\n",
"## Toy 25\n",
"n sig test is: 16582\n",
"n bkg test is: 16418\n",
"n bkg reduced is: 1000\n",
"## Toy 26\n",
"n sig test is: 16484\n",
"n bkg test is: 16516\n",
"n bkg reduced is: 1000\n",
"## Toy 27\n",
"n sig test is: 16506\n",
"n bkg test is: 16494\n",
"n bkg reduced is: 1000\n",
"## Toy 28\n",
"n sig test is: 16592\n",
"n bkg test is: 16408\n",
"n bkg reduced is: 1000\n",
"## Toy 29\n",
"n sig test is: 16456\n",
"n bkg test is: 16544\n",
"n bkg reduced is: 1000\n",
"## Toy 30\n",
"n sig test is: 16354\n",
"n bkg test is: 16646\n",
"n bkg reduced is: 1000\n",
"## Toy 31\n",
"n sig test is: 16526\n",
"n bkg test is: 16474\n",
"n bkg reduced is: 1000\n",
"## Toy 32\n",
"n sig test is: 16551\n",
"n bkg test is: 16449\n",
"n bkg reduced is: 1000\n",
"## Toy 33\n",
"n sig test is: 16504\n",
"n bkg test is: 16496\n",
"n bkg reduced is: 1000\n",
"## Toy 34\n",
"n sig test is: 16524\n",
"n bkg test is: 16476\n",
"n bkg reduced is: 1000\n",
"## Toy 35\n",
"n sig test is: 16593\n",
"n bkg test is: 16407\n",
"n bkg reduced is: 1000\n",
"## Toy 36\n",
"n sig test is: 16549\n",
"n bkg test is: 16451\n",
"n bkg reduced is: 1000\n",
"## Toy 37\n",
"n sig test is: 16471\n",
"n bkg test is: 16529\n",
"n bkg reduced is: 1000\n",
"## Toy 38\n",
"n sig test is: 16514\n",
"n bkg test is: 16486\n",
"n bkg reduced is: 1000\n",
"## Toy 39\n",
"n sig test is: 16521\n",
"n bkg test is: 16479\n",
"n bkg reduced is: 1000\n",
"## Toy 40\n",
"n sig test is: 16636\n",
"n bkg test is: 16364\n",
"n bkg reduced is: 1000\n",
"## Toy 41\n",
"n sig test is: 16632\n",
"n bkg test is: 16368\n",
"n bkg reduced is: 1000\n",
"## Toy 42\n",
"n sig test is: 16444\n",
"n bkg test is: 16556\n",
"n bkg reduced is: 1000\n",
"## Toy 43\n",
"n sig test is: 16581\n",
"n bkg test is: 16419\n",
"n bkg reduced is: 1000\n",
"## Toy 44\n",
"n sig test is: 16379\n",
"n bkg test is: 16621\n",
"n bkg reduced is: 1000\n",
"## Toy 45\n",
"n sig test is: 16568\n",
"n bkg test is: 16432\n",
"n bkg reduced is: 1000\n",
"## Toy 46\n",
"n sig test is: 16556\n",
"n bkg test is: 16444\n",
"n bkg reduced is: 1000\n",
"## Toy 47\n",
"n sig test is: 16599\n",
"n bkg test is: 16401\n",
"n bkg reduced is: 1000\n",
"## Toy 48\n",
"n sig test is: 16417\n",
"n bkg test is: 16583\n",
"n bkg reduced is: 1000\n",
"## Toy 49\n",
"n sig test is: 16524\n",
"n bkg test is: 16476\n",
"n bkg reduced is: 1000\n",
"## Toy 50\n",
"n sig test is: 16523\n",
"n bkg test is: 16477\n",
"n bkg reduced is: 1000\n",
"## Toy 51\n",
"n sig test is: 16485\n",
"n bkg test is: 16515\n",
"n bkg reduced is: 1000\n",
"## Toy 52\n",
"n sig test is: 16518\n",
"n bkg test is: 16482\n",
"n bkg reduced is: 1000\n",
"## Toy 53\n",
"n sig test is: 16542\n",
"n bkg test is: 16458\n",
"n bkg reduced is: 1000\n",
"## Toy 54\n",
"n sig test is: 16497\n",
"n bkg test is: 16503\n",
"n bkg reduced is: 1000\n",
"## Toy 55\n",
"n sig test is: 16431\n",
"n bkg test is: 16569\n",
"n bkg reduced is: 1000\n",
"## Toy 56\n",
"n sig test is: 16523\n",
"n bkg test is: 16477\n",
"n bkg reduced is: 1000\n",
"## Toy 57\n",
"n sig test is: 16373\n",
"n bkg test is: 16627\n",
"n bkg reduced is: 1000\n",
"## Toy 58\n",
"n sig test is: 16695\n",
"n bkg test is: 16305\n",
"n bkg reduced is: 1000\n",
"## Toy 59\n",
"n sig test is: 16303\n",
"n bkg test is: 16697\n",
"n bkg reduced is: 1000\n",
"## Toy 60\n",
"n sig test is: 16484\n",
"n bkg test is: 16516\n",
"n bkg reduced is: 1000\n",
"## Toy 61\n",
"n sig test is: 16460\n",
"n bkg test is: 16540\n",
"n bkg reduced is: 1000\n",
"## Toy 62\n",
"n sig test is: 16588\n",
"n bkg test is: 16412\n",
"n bkg reduced is: 1000\n",
"## Toy 63\n",
"n sig test is: 16543\n",
"n bkg test is: 16457\n",
"n bkg reduced is: 1000\n",
"## Toy 64\n",
"n sig test is: 16538\n",
"n bkg test is: 16462\n",
"n bkg reduced is: 1000\n",
"## Toy 65\n",
"n sig test is: 16626\n",
"n bkg test is: 16374\n",
"n bkg reduced is: 1000\n",
"## Toy 66\n",
"n sig test is: 16469\n",
"n bkg test is: 16531\n",
"n bkg reduced is: 1000\n",
"## Toy 67\n",
"n sig test is: 16559\n",
"n bkg test is: 16441\n",
"n bkg reduced is: 1000\n",
"## Toy 68\n",
"n sig test is: 16542\n",
"n bkg test is: 16458\n",
"n bkg reduced is: 1000\n",
"## Toy 69\n",
"n sig test is: 16464\n",
"n bkg test is: 16536\n",
"n bkg reduced is: 1000\n",
"## Toy 70\n",
"n sig test is: 16442\n",
"n bkg test is: 16558\n",
"n bkg reduced is: 1000\n",
"## Toy 71\n",
"n sig test is: 16316\n",
"n bkg test is: 16684\n",
"n bkg reduced is: 1000\n",
"## Toy 72\n",
"n sig test is: 16501\n",
"n bkg test is: 16499\n",
"n bkg reduced is: 1000\n",
"## Toy 73\n",
"n sig test is: 16620\n",
"n bkg test is: 16380\n",
"n bkg reduced is: 1000\n",
"## Toy 74\n",
"n sig test is: 16542\n",
"n bkg test is: 16458\n",
"n bkg reduced is: 1000\n",
"## Toy 75\n",
"n sig test is: 16462\n",
"n bkg test is: 16538\n",
"n bkg reduced is: 1000\n",
"## Toy 76\n",
"n sig test is: 16658\n",
"n bkg test is: 16342\n",
"n bkg reduced is: 1000\n",
"## Toy 77\n",
"n sig test is: 16372\n",
"n bkg test is: 16628\n",
"n bkg reduced is: 1000\n",
"## Toy 78\n",
"n sig test is: 16536\n",
"n bkg test is: 16464\n",
"n bkg reduced is: 1000\n",
"## Toy 79\n",
"n sig test is: 16475\n",
"n bkg test is: 16525\n",
"n bkg reduced is: 1000\n",
"## Toy 80\n",
"n sig test is: 16499\n",
"n bkg test is: 16501\n",
"n bkg reduced is: 1000\n",
"## Toy 81\n",
"n sig test is: 16440\n",
"n bkg test is: 16560\n",
"n bkg reduced is: 1000\n",
"## Toy 82\n",
"n sig test is: 16526\n",
"n bkg test is: 16474\n",
"n bkg reduced is: 1000\n",
"## Toy 83\n",
"n sig test is: 16441\n",
"n bkg test is: 16559\n",
"n bkg reduced is: 1000\n",
"## Toy 84\n",
"n sig test is: 16477\n",
"n bkg test is: 16523\n",
"n bkg reduced is: 1000\n",
"## Toy 85\n",
"n sig test is: 16581\n",
"n bkg test is: 16419\n",
"n bkg reduced is: 1000\n",
"## Toy 86\n",
"n sig test is: 16510\n",
"n bkg test is: 16490\n",
"n bkg reduced is: 1000\n",
"## Toy 87\n",
"n sig test is: 16440\n",
"n bkg test is: 16560\n",
"n bkg reduced is: 1000\n",
"## Toy 88\n",
"n sig test is: 16603\n",
"n bkg test is: 16397\n",
"n bkg reduced is: 1000\n",
"## Toy 89\n",
"n sig test is: 16483\n",
"n bkg test is: 16517\n",
"n bkg reduced is: 1000\n",
"## Toy 90\n",
"n sig test is: 16426\n",
"n bkg test is: 16574\n",
"n bkg reduced is: 1000\n",
"## Toy 91\n",
"n sig test is: 16572\n",
"n bkg test is: 16428\n",
"n bkg reduced is: 1000\n",
"## Toy 92\n",
"n sig test is: 16687\n",
"n bkg test is: 16313\n",
"n bkg reduced is: 1000\n",
"## Toy 93\n",
"n sig test is: 16486\n",
"n bkg test is: 16514\n",
"n bkg reduced is: 1000\n",
"## Toy 94\n",
"n sig test is: 16542\n",
"n bkg test is: 16458\n",
"n bkg reduced is: 1000\n",
"## Toy 95\n",
"n sig test is: 16519\n",
"n bkg test is: 16481\n",
"n bkg reduced is: 1000\n",
"## Toy 96\n",
"n sig test is: 16424\n",
"n bkg test is: 16576\n",
"n bkg reduced is: 1000\n",
"## Toy 97\n",
"n sig test is: 16500\n",
"n bkg test is: 16500\n",
"n bkg reduced is: 1000\n",
"## Toy 98\n",
"n sig test is: 16524\n",
"n bkg test is: 16476\n",
"n bkg reduced is: 1000\n",
"## Toy 99\n",
"n sig test is: 16643\n",
"n bkg test is: 16357\n",
"n bkg reduced is: 1000\n",
"### Results\n",
"Mean area with full set is: 0.9757 +- 0.0133\n",
"Mean area with redu set is: 0.9756 +- 0.0134\n"
]
}
],
"source": [
"# run toys\n",
"n_toys = 100\n",
"n_samples = 100000\n",
"rdm_state = 500\n",
"plots = True\n",
"\n",
"areas = {'full': [], 'red': []}\n",
"for i in range(n_toys):\n",
" print \"## Toy %s\" %i\n",
" if i>0: plots = False \n",
" a_full, a_red = roc_imabalance(n_samples, rdm_state, plots)\n",
" areas['full'].append(a_full)\n",
" areas['red'].append(a_red)\n",
" rdm_state += 1\n",
"\n",
"print \"### Results\"\n",
"print \"Mean area with full set is: %0.4f +- %0.4f\" %(np.mean(areas['full']), np.std(areas['full']))\n",
"print \"Mean area with redu set is: %0.4f +- %0.4f\" %(np.mean(areas['red']), np.std(areas['red']))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This shows that the area under a ROC curve is and invariant measure under imbalanced samples."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.2"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment