{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Assessing model performance\n", "\n", "#### Classification" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import scipy.stats\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import (\n", " accuracy_score,\n", " balanced_accuracy_score,\n", " confusion_matrix\n", ")\n", "import pandas as pd\n", "import seaborn as sns\n", "from sklearn.linear_model import LinearRegression, RidgeCV\n", "from sklearn.metrics import r2_score\n", "\n", "from sklearn.model_selection import ShuffleSplit, KFold\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def generate_classification_results(n=1000,\n", " seed=None,\n", " noise_sd=1,\n", " signal_sd=10,\n", " p_pos=0.5,\n", " shuffle=False,\n", " pred=None,\n", " clf=None):\n", "\n", " rng = np.random.RandomState(seed)\n", "\n", " X = rng.normal(size=n) * signal_sd\n", " noise = noise_sd * rng.randn(n)\n", " thresh = scipy.stats.scoreatpercentile(X, 100 * (1 - p_pos))\n", " y = ((X + noise) > thresh).astype('int')\n", " if shuffle:\n", " rng.shuffle(y)\n", " \n", " if pred is not None:\n", " y_pred = pred * np.ones(n)\n", " else:\n", " clf = LogisticRegression()\n", " clf.fit(X[:, None], y)\n", " y_pred = clf.predict(X[:, None])\n", " \n", " results = {\n", " 'acc': accuracy_score(y, y_pred),\n", " 'bacc': balanced_accuracy_score(y, y_pred),\n", " 'confusion': confusion_matrix(y, y_pred),\n", " 'n': n,\n", " 'seed': seed,\n", " 'noise_sd': noise_sd,\n", " 'signal_sd': signal_sd,\n", " 'p_pos': p_pos,\n", " 'shuffle': shuffle,\n", " 'thresh': thresh,\n", " 'clf': clf,\n", " 'X': X,\n", " 'y': y,\n", " 'pred': y_pred,\n", " }\n", " return(results)\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'acc': 0.984,\n", " 'bacc': np.float64(0.9481118290742605),\n", " 'confusion': array([[ 93, 10],\n", " [ 6, 891]]),\n", " 'n': 1000,\n", " 'seed': None,\n", " 'noise_sd': 1,\n", " 'signal_sd': 10,\n", " 'p_pos': 0.9,\n", " 'shuffle': False,\n", " 'thresh': np.float64(-13.026289334267915),\n", " 'clf': LogisticRegression(),\n", " 'X': array([ 1.64182403e+01, 7.73439060e+00, 2.24248539e+00, -8.63066851e+00,\n", " 8.08734003e+00, 3.05031670e+00, -5.24783181e+00, -1.26985283e+01,\n", " 7.02741658e+00, -5.04099515e+00, -4.51292740e+00, 2.11733753e+01,\n", " 7.91278931e+00, -1.28838295e+01, -2.11326839e+01, -6.35590505e-01,\n", " -7.44629224e+00, -1.50205882e+01, -5.10118865e+00, 5.97476744e+00,\n", " 1.05675346e+01, 8.82422093e+00, -9.99421920e+00, 1.78710953e+01,\n", " 7.54784544e+00, -9.46454849e+00, 2.10661502e+00, 1.69243192e+01,\n", " 1.33725754e+01, -2.65811557e+00, -6.89942099e+00, 4.56516278e+00,\n", " 5.36624832e+00, -1.99801218e+00, -5.78889359e+00, 7.52852491e+00,\n", " -1.38892648e+01, 2.31451016e+00, 2.14269986e+00, 3.14156627e+00,\n", " 3.64628031e+00, 3.13339286e+00, -9.19555068e+00, 3.50681658e+00,\n", " 1.78900125e+00, -7.62436095e+00, 1.91105042e+00, -1.96914608e+01,\n", " 2.65339338e+00, -8.99807889e+00, 4.39679224e+00, 2.98363465e-01,\n", " 4.36490647e-01, -1.22517331e+01, 2.49818559e+00, 1.05609829e+01,\n", " -1.61199350e+00, -8.78655063e+00, -3.62751109e-01, -6.30486686e+00,\n", " -6.55623218e+00, 9.13852545e+00, -3.54492009e+00, -6.69395499e+00,\n", " 1.03572708e+00, 3.29768479e+00, -1.49825315e+01, -6.32321316e+00,\n", " -7.62370810e+00, -6.48895970e+00, -3.69362388e+00, -1.11737532e+01,\n", " -1.20850957e+01, 1.10429545e+01, -2.32439837e+01, -8.78555988e-02,\n", " 5.33577136e+00, 1.34301949e+00, -2.07453617e+00, -8.86308612e+00,\n", " 1.05551117e+01, 1.81219366e-01, 6.65255847e-01, 1.28734506e+00,\n", " -2.52616051e+00, -4.67388873e+00, -3.11685146e+00, -2.20452620e+00,\n", " -7.04574788e+00, 6.51193142e+00, 6.22291664e+00, 1.69545423e+01,\n", " 1.50267226e+01, -1.23496888e+01, -4.18022403e+00, -6.21144299e+00,\n", " 2.96953188e+00, 2.76768861e+00, 5.83285742e+00, -6.60230362e+00,\n", " 2.38212431e+00, -8.52558914e+00, -1.46343942e+01, 7.22614066e+00,\n", " 2.07625114e+01, 6.52645879e+00, 9.70397858e-03, 1.22505519e+01,\n", " 1.51175988e+01, 1.05256108e+00, 5.80415404e+00, 8.20465950e+00,\n", " -1.09780785e+01, 1.02651068e+01, -1.57728798e+01, 1.22322274e+01,\n", " -4.48691964e+00, 8.28831454e+00, -1.26527682e+01, -1.70314719e+01,\n", " -4.56979367e+00, 3.36759968e+00, -1.43782113e+01, -4.69820016e+00,\n", " -7.58383312e+00, 6.18271217e+00, 2.42078924e+01, -4.55935759e+00,\n", " -3.70315619e+00, 1.29309556e+00, 9.62816266e+00, 8.40026453e+00,\n", " -6.39934629e+00, -2.42885780e+01, 1.48434393e+01, -1.30669028e+01,\n", " -5.78598149e+00, -5.33971676e-02, -9.34195974e-01, -1.24292071e+01,\n", " -9.61328630e+00, 9.47001899e-01, 8.34116356e+00, 8.65824801e+00,\n", " 1.28922269e+00, -1.03818377e+01, -1.30217767e+01, -6.56708827e-01,\n", " -4.19929802e+00, 4.92283959e+00, 8.98451719e+00, 1.55046355e+01,\n", " -2.75781153e+01, 2.33474635e+00, 6.32197759e+00, 1.28563615e+01,\n", " -6.45290440e+00, -3.42474458e-01, -1.36012980e+00, -5.79145629e+00,\n", " 2.44182234e+01, 3.23469003e+00, -1.99237463e+01, -1.05342888e+00,\n", " -9.58588278e+00, -4.26816928e-01, -6.74501224e+00, -4.78747806e-01,\n", " 3.05755059e+00, 1.66292221e+01, -1.63424490e+00, 5.41252228e+00,\n", " -1.18903510e+01, 9.38959641e+00, 2.80925611e+00, 1.37291393e+00,\n", " -5.84519874e-01, -7.30336972e+00, -4.85723603e-01, -1.34160815e+00,\n", " -1.45983435e+01, -1.22040214e+01, -7.57846092e-01, -1.45623626e+01,\n", " -4.99445682e+00, -1.23398955e+00, -4.53285665e+00, -9.30056784e-01,\n", " -4.67155920e+00, 7.68464081e+00, -1.94471631e+01, -1.97629688e+01,\n", " -1.45483425e+01, 3.29865499e+00, 1.65723486e+00, 9.26982201e+00,\n", " 1.08963305e+01, 2.08242109e+01, 8.19315738e-01, 2.64974643e-02,\n", " 3.38661233e+00, 1.07683308e+00, 2.79009996e+00, 8.68033133e+00,\n", " -3.57874125e+00, -3.90450692e+00, 1.71548647e+00, 2.88052290e+00,\n", " 1.20138560e+01, 1.90818169e+01, -2.99106572e+00, -8.33209491e+00,\n", " -9.51825221e+00, -5.50318977e+00, -7.23905065e+00, 3.14791062e-01,\n", " 3.80503909e+00, -2.15112697e+00, -2.23392111e+01, -2.50626014e+00,\n", " -2.57191957e+00, 7.23503151e+00, -5.03231304e+00, -8.92030601e+00,\n", " -6.50431853e+00, -1.91500605e+00, 2.07385265e-01, -2.57743495e+01,\n", " -9.89153644e+00, 4.74615923e-01, -1.71812547e+01, 9.45231213e+00,\n", " 7.68634817e+00, 1.65723415e+01, 1.40461848e+01, -1.01074514e+01,\n", " -5.86829610e+00, -1.84656216e+01, -1.85396966e+01, 9.11069858e-01,\n", " -7.67113094e+00, -2.58634434e+01, -5.67436239e+00, -6.51314843e+00,\n", " -5.54978358e+00, -9.47094713e+00, -6.34636676e-01, 1.38817857e+00,\n", " 3.93110268e+00, -1.86255085e+01, 7.45523586e+00, -9.47202193e+00,\n", " -8.68205929e+00, 9.82781403e+00, -9.29555834e+00, -1.73566647e+00,\n", " -2.24575020e+01, 1.06474264e+01, 5.26833212e+00, -2.46911947e+00,\n", " 3.30997735e+00, -3.09713924e+00, -2.07604822e+00, -1.32362087e+01,\n", " 7.51746786e+00, 1.09485991e+01, -1.12780483e+01, -8.24639380e+00,\n", " 7.90851368e+00, 1.32094938e+01, -8.41980792e+00, -2.41604861e+01,\n", " -2.49299721e+01, -4.75880924e+00, 1.34787920e+01, 5.03863481e+00,\n", " -8.97469679e+00, -1.22057507e+01, 1.35071090e+01, 1.18731237e+01,\n", " -1.01224416e+00, -1.32049942e+00, -6.41030356e+00, -2.79233536e-01,\n", " 3.41297173e+00, 1.52804450e+01, 2.24045258e+01, 2.35442009e+00,\n", " -7.83038959e+00, 1.38872842e+00, 2.31142280e+01, 5.62018416e+00,\n", " 1.32321353e+01, 1.61190312e+01, -7.99750772e+00, 2.47329235e+01,\n", " 2.99046960e+00, -7.52167205e+00, 9.31150040e+00, 1.85425255e+01,\n", " -5.73424850e+00, -1.35803709e+01, -1.13989175e+01, 9.09572406e+00,\n", " 2.58539924e+00, -9.73155133e-01, -8.24384838e+00, 1.34174630e+01,\n", " 1.00695986e+01, 7.08746729e+00, -2.55284065e+00, 2.80098530e+00,\n", " 4.89980331e-01, -1.98146423e+01, 2.45098617e+00, -9.34430495e+00,\n", " 1.39992201e+00, -8.23031878e-01, 7.04671887e+00, -1.20030632e+01,\n", " -5.96453807e+00, 3.80323774e+00, -1.08041340e+01, -2.54756327e+01,\n", " -9.64829324e+00, 8.56316072e+00, 7.87777571e+00, -3.48107719e+00,\n", " 6.00936957e+00, -3.92726875e+00, -2.24542404e+01, -2.50541663e-01,\n", " 1.28709204e+01, -1.90364110e-01, 4.38171109e+00, 8.37552522e+00,\n", " -1.22853166e+01, 2.45766441e+00, 2.12034850e+01, -7.39163836e+00,\n", " 3.87370083e+00, -6.60267251e+00, 9.29828245e-01, 7.43403568e+00,\n", " 6.92537467e+00, -6.06421004e+00, -1.83666365e+01, 1.37019947e+01,\n", " 2.85835474e+00, -3.23461788e+00, 7.62592572e+00, -1.86596883e+01,\n", " 1.21825710e+01, 6.14333088e-01, -2.59078862e+00, 5.94059066e+00,\n", " 5.99868541e+00, 1.78076695e+00, -4.72083101e+00, 2.84587542e+00,\n", " 1.14185885e+01, 1.75735102e-01, 3.60839658e+00, -2.82040776e+00,\n", " 4.11025685e+00, 5.28636236e+00, 1.14406542e+01, -6.43790455e+00,\n", " 1.12420444e+00, -1.11169429e+01, 6.59961467e-01, -1.93007169e+00,\n", " -1.29782106e+01, 3.36905409e+00, -1.07623785e+01, -1.08202458e+01,\n", " 3.57321271e+00, 1.55322239e+01, -8.10596327e+00, 1.75778609e+01,\n", " -1.46481689e+00, 2.30515822e+01, -4.47478729e+00, 1.45930648e+01,\n", " 7.17670003e+00, -1.22691408e+01, -2.25082987e-01, 9.64364239e+00,\n", " -3.95974123e+00, -7.06789811e+00, -5.39158160e+00, -4.99205055e+00,\n", " -2.63411159e+01, 2.75322126e+00, -1.16325855e+01, -1.03390586e+01,\n", " 9.18850565e-01, 3.99389082e+00, -2.09386018e+00, -2.32049193e+00,\n", " 6.51660891e+00, 1.39671594e+01, -2.30382143e+00, -1.71936664e+01,\n", " -8.42643183e+00, -1.41545525e+01, 9.03041457e-01, -1.06732036e+01,\n", " 1.17100616e+00, 1.97287305e+01, 2.84652167e-01, 4.35293743e+00,\n", " 5.73161280e+00, -3.64326596e+00, -2.80847763e+00, -9.65796420e-01,\n", " 8.37606536e+00, 5.99515904e+00, 1.16746941e+00, 3.51946228e+00,\n", " -1.29349055e+01, 1.90433142e+00, 1.65610885e+00, -2.03067878e+00,\n", " -4.17284045e+00, -3.23193712e+00, -4.14257276e+00, 8.50423117e+00,\n", " 2.07807961e+00, -2.40150541e+01, -1.39302731e+01, -8.29221147e+00,\n", " 1.33580769e+01, -1.23223171e+01, 5.50807979e+00, -1.46699107e+00,\n", " 1.43390692e+01, -7.20630611e+00, 6.56103398e+00, -5.63754091e-01,\n", " -2.71945076e+00, 3.30539443e+00, 2.71634527e+01, -7.94250109e+00,\n", " 2.09921274e+01, -1.85160549e+01, -3.03062431e+00, 3.90359134e+00,\n", " 6.05662873e+00, -2.19637965e+00, 4.05427930e+00, 9.37969043e+00,\n", " -1.68569834e+00, 1.00312218e+00, -1.18514331e+01, 2.02115155e+00,\n", " -1.32824196e+01, -1.47055812e+01, -4.07024782e+00, -5.88531876e+00,\n", " -2.46481644e+00, -2.99262980e+00, 7.87940573e-01, -1.32593424e+01,\n", " -2.66280410e+00, 1.48102398e+01, -1.09433138e+01, -7.47946544e+00,\n", " 3.64373472e+00, -1.43578113e+01, -6.10691266e+00, -7.18434341e+00,\n", " 3.74208957e+00, -6.84120764e+00, -7.55761697e-01, -7.64799796e+00,\n", " 7.57214073e+00, 6.54684521e+00, -5.01682589e+00, 8.32200965e+00,\n", " 1.20624109e+01, 1.03430218e+00, -4.16551123e+00, 1.77712404e+00,\n", " 6.80820878e+00, -1.40211504e+00, -1.01230839e+01, -1.23162461e+01,\n", " -1.94684781e+01, 9.06430136e+00, 9.93365673e+00, 2.29117461e+00,\n", " 9.90249734e+00, -1.54710326e+01, 1.10641311e+01, -2.17011398e+00,\n", " -2.61703037e+00, -1.39234548e+01, 3.91608627e+00, -3.49805395e+00,\n", " 3.55217620e+00, 5.96252315e+00, 1.74067067e+01, -9.12449519e+00,\n", " 1.98676508e+00, -1.18736702e+00, -1.16440099e+01, 4.32403042e+00,\n", " -1.68856958e+01, 3.17711410e+00, 1.62947629e+00, 2.15078224e+01,\n", " -1.07648182e+01, -2.27177643e+00, -1.04365853e+01, 1.81701634e+01,\n", " -1.41910213e+01, 6.11056897e+00, -1.60459519e+01, -8.21006787e+00,\n", " -1.31651742e+01, -2.06798527e+01, -1.39646929e+01, 3.33339733e+00,\n", " 3.04992530e+01, 1.27437960e+01, 4.24251069e+00, 1.33364158e+01,\n", " 1.64329912e+00, -1.40468670e+01, 2.44611729e+00, -3.67863318e+00,\n", " 1.48305416e+01, 1.28640715e+00, -1.04333108e+01, -2.79274538e+01,\n", " -1.96779053e-01, -6.85236198e+00, 1.74306399e-01, 1.24051441e+01,\n", " -1.37465513e+00, -9.64438805e-03, -2.23903737e+01, -1.57692965e+01,\n", " -8.60162179e+00, 2.46807544e+00, -1.11535420e+01, 5.87742301e+00,\n", " -1.49719200e+01, -2.13898514e+01, -6.21872404e+00, -1.37514531e+01,\n", " 7.15248933e-01, -1.16025815e+01, 2.27057665e+00, 3.47117170e+00,\n", " -9.27706811e+00, -5.74853847e+00, -6.51985811e+00, 3.19761312e+00,\n", " -7.83324024e-01, 2.03362701e+00, -1.06118880e+01, -1.28712820e+00,\n", " -1.55885620e+01, -4.32104194e+00, -2.02879849e+01, -1.93060551e+01,\n", " 1.81344897e+00, -6.52634723e-01, 1.87566189e+00, 1.08600046e+01,\n", " -1.39197941e+01, 1.28905546e+01, 5.32467004e+00, -3.66792469e+00,\n", " -1.20869841e+01, 7.24897303e+00, 1.09456764e+01, -2.61881171e+00,\n", " -3.59755421e+00, 2.45704500e+01, -1.10078101e+01, 9.26756034e+00,\n", " 2.28549370e+00, 2.57059396e+01, -2.54334559e+01, -1.26070749e+01,\n", " 1.07489984e+01, -1.37070595e+01, 3.73355649e+00, -2.26291493e+00,\n", " 4.29634674e+00, -4.22229930e+00, 6.56404262e+00, 6.74540874e+00,\n", " -4.53125923e+00, 1.25735201e+01, -3.40278018e+00, -1.48269505e+01,\n", " 1.36954097e+01, -8.06249166e+00, 1.12538049e+01, 1.38402037e+01,\n", " -8.69827733e+00, -2.92135312e-01, 1.32332103e+01, 4.73637940e+00,\n", " 7.16876626e+00, 2.31614738e+01, 1.59214783e+01, -1.04379614e+01,\n", " -1.51202591e+01, -9.63574298e+00, 1.37273252e+01, -5.34972693e+00,\n", " -1.32048814e+01, 8.22668353e+00, 2.80237845e+00, -1.66008254e+01,\n", " -2.68882792e+00, 7.83770755e+00, -5.44401193e+00, 7.32366021e+00,\n", " -3.05391292e+00, 1.14413947e+01, -2.03338875e+01, 3.77707287e+00,\n", " -1.17961784e+01, 1.04165304e+00, 4.16397250e+00, -1.20891679e+00,\n", " -2.38177765e+00, 2.83194776e+00, -1.52643173e+01, 1.08631558e+01,\n", " -4.92605669e+00, -7.65650738e+00, -1.34876499e+01, -2.28649238e+01,\n", " -4.57410858e+00, 2.74550251e+00, 2.74218482e-01, -2.03034500e+01,\n", " -8.77550551e-01, 5.99755272e+00, 1.68810316e+01, -8.45349292e+00,\n", " 1.49763992e+00, -1.07574034e+01, -1.13157707e+01, 6.51892739e+00,\n", " -9.43643490e-01, -1.72846216e+00, -1.29509968e+00, -1.29275828e+01,\n", " 3.64495982e-01, 3.75560629e+00, 1.19191180e+00, 7.88728649e+00,\n", " 9.74326778e+00, -1.23545925e+01, 1.59734609e+00, -1.02358251e+01,\n", " 7.72428850e+00, -2.30601465e+00, 4.30860432e+00, -1.77988532e+00,\n", " -2.48779398e+01, -9.28989011e+00, -1.10724861e+00, 7.18861678e+00,\n", " 6.75932601e+00, 2.00187273e+00, -1.63466964e+00, 1.92160285e+01,\n", " -6.99944131e+00, 1.35355307e+01, -7.37858204e+00, 3.26666225e+00,\n", " -7.96014336e+00, 7.59861069e+00, -5.56364763e+00, 1.34899848e+01,\n", " -1.86809862e+00, -1.25095765e+01, 7.88334934e+00, -5.30206725e-01,\n", " -1.15407160e+01, 1.38225864e+01, -2.87625457e+00, 1.14184786e+01,\n", " -8.04665555e+00, -9.36164550e-01, 2.07395899e+01, -6.57120687e+00,\n", " 4.20917477e+00, 2.09294082e+01, -2.90660984e+00, -6.05612656e+00,\n", " 5.44477766e+00, 3.48610502e+00, -6.60534235e+00, -7.11304095e+00,\n", " 5.37281935e+00, -8.99827164e+00, -1.06498210e+01, 4.19712932e+00,\n", " 1.17412320e+00, 1.80637524e+01, 7.05075623e+00, 1.04485882e+01,\n", " 3.54234429e+00, 5.79906673e+00, -1.33351290e+01, 1.41423160e+01,\n", " -8.95182192e+00, -4.31568263e+00, 1.04177861e+01, 1.26616312e+01,\n", " 7.67378649e+00, -2.16982781e+01, -1.00816551e+01, 2.35518737e+01,\n", " 6.86530772e+00, 6.40697601e+00, -1.99322748e+00, 3.98246319e+00,\n", " 2.05288233e+01, 1.39854696e+01, -1.17054961e+01, 6.04978021e+00,\n", " 4.40863513e+00, 9.24759948e+00, 4.49112700e-01, -3.73650634e+00,\n", " -1.29550453e+01, 1.66737979e+01, -1.29217769e+01, 4.37659712e+00,\n", " -7.17431367e+00, 1.34761041e+01, 1.28740431e+01, 3.65019299e+00,\n", " -4.51121741e+00, 1.09273790e+00, -2.37040194e+00, -1.94368144e+00,\n", " -1.53354225e+00, 1.61068054e+01, 3.09931942e+00, -1.80617615e+01,\n", " 2.15583174e+00, -7.61688834e+00, -3.91699995e+00, -4.20206013e+00,\n", " 3.44904518e+00, 7.70283094e+00, -1.12672523e+01, 3.85767141e+00,\n", " 1.25304623e+00, -9.85203195e+00, -1.08827795e-01, -4.73437011e+00,\n", " 4.81716938e+00, 6.30232158e+00, -1.21726982e+01, 8.93600976e+00,\n", " -1.37533124e+01, -6.18407517e+00, -7.26695102e+00, -1.06277951e+01,\n", " 2.66285025e+00, -7.54966489e+00, 1.51955994e+01, 1.78114541e-01,\n", " -3.36344782e+00, -4.88392448e+00, 1.75039304e+01, 6.78119997e+00,\n", " -8.82927438e+00, -8.47610904e+00, -1.21456751e+01, 9.63552622e+00,\n", " -1.98378110e+01, -9.66024838e+00, 1.38543827e+00, -1.30898394e+01,\n", " 7.68208435e+00, -8.02173899e+00, 6.86812488e+00, -1.03544567e+01,\n", " 2.17095337e+00, 1.21861988e+01, -1.87335019e+00, 9.94388673e+00,\n", " 2.24795481e+00, -1.11808209e+01, -1.02444828e+01, 2.83471831e+00,\n", " 4.82592021e-01, -7.06726391e+00, 1.08942544e+01, 1.24659810e+00,\n", " -1.40673697e+01, 1.32327038e+01, -1.57108329e+01, -1.75334861e+01,\n", " 7.08369754e+00, 1.40864235e+01, -2.65188311e+01, 6.32079714e+00,\n", " 3.59577557e+00, -1.29752581e+01, 1.77481215e+01, -3.07296471e+00,\n", " 1.08750989e+01, 8.52826097e-01, 1.40369651e+01, -6.48204908e+00,\n", " 4.53679735e+00, 1.62885653e+00, 2.16431798e+00, -1.50502935e+00,\n", " 1.41826273e+01, 8.39262368e+00, 2.79261297e+00, -1.65216944e+01,\n", " 1.19925631e+01, -2.00547315e+00, -2.27278973e+00, -7.33755176e+00,\n", " -1.29671900e+01, 1.17336047e+01, -6.62628390e-03, 3.27095879e+00,\n", " 2.01840757e+00, 2.87668878e+01, 6.09763446e+00, 6.86624271e+00,\n", " -3.53508260e+00, -5.70502920e+00, -8.12630657e+00, -7.76413167e+00,\n", " -2.36285877e+01, 4.51707643e+00, 2.24780474e+00, 9.73766016e+00,\n", " 7.56308848e+00, 7.92312868e+00, 2.62134143e+01, 1.48966272e+01,\n", " -2.51127913e-01, -1.08603351e+01, 1.38586257e+01, 3.93853893e+00,\n", " -5.13204830e+00, -8.47547768e+00, -5.28988332e-01, 7.88877668e+00,\n", " -6.34469600e+00, -1.11059594e+01, -9.19961077e+00, 2.50666560e+01,\n", " 1.63126039e+01, -2.76726120e+00, -9.66728412e+00, 3.03591034e+00,\n", " -1.08992066e+01, -1.30086717e+01, 1.69221866e+01, 2.20256417e+01,\n", " -1.10545329e+01, 3.50376330e-01, -6.90355188e+00, 9.44602995e+00,\n", " -2.91875937e+00, 1.66011194e+01, 2.63996799e+01, -1.27576930e+01,\n", " -1.02189666e+01, -9.07092475e-01, 1.99954293e+00, -2.30263785e+01,\n", " -9.95310420e+00, 1.74388607e+01, -7.43659080e+00, -1.86104996e+00,\n", " -6.26792853e+00, -1.77563285e+00, -1.10975111e+01, -8.36704413e+00,\n", " 5.55223950e+00, 1.01638548e+00, -3.41420376e+00, 2.89375811e+01,\n", " -8.30050294e+00, 6.80054156e-01, -1.12570467e+01, -2.14337479e+00,\n", " -1.15525381e+01, 9.40782045e+00, 4.70689725e+00, 6.98255237e+00,\n", " -1.80286860e+01, 9.50598407e+00, 1.14907317e+01, -7.21410598e+00,\n", " 5.95980631e+00, 1.47695538e+01, 2.18677747e+01, -3.56527529e+00,\n", " -2.88338579e+00, -2.88919962e+01, -1.50428808e+01, 5.75214104e+00,\n", " -7.09680112e+00, 7.91132905e+00, 5.62263395e+00, 9.59879753e+00,\n", " -2.35489899e+01, -1.32419311e+01, -5.56360877e+00, -7.88479117e+00,\n", " -1.94414526e+00, 1.14007530e+01, -3.20676751e+00, 6.76766226e+00,\n", " 7.37185904e-02, -2.45481520e+00, 8.95722055e+00, -5.53491385e+00,\n", " -5.28741174e-01, 4.87937147e+00, 6.81174810e+00, 3.26613095e+00,\n", " -1.23257812e+00, -1.52468640e+01, 2.67082125e+00, 1.22283176e+01,\n", " 2.39229490e+00, -1.07033504e+01, -4.02452952e+00, 2.07756248e+01,\n", " 1.99521183e+01, 1.98993155e+01, -4.56218215e+00, 1.02347059e+01,\n", " -3.10551088e-01, 1.21285553e+01, 7.46433607e+00, 3.58982732e-01,\n", " 3.70573663e+00, 2.62001495e+00, 6.71785709e+00, -1.13768630e+01,\n", " 1.69302649e+01, 5.68573876e+00, 2.59553612e+00, 2.02231808e+01,\n", " -5.01073391e+00, -4.16930718e+00, 4.48818482e+00, 2.69112041e+01,\n", " 7.77842750e+00, 3.99998908e+00, 8.71986337e+00, 1.76378193e+00,\n", " 6.05153549e+00, 1.07711797e+00, -3.83897837e+00, 5.50431240e+00,\n", " 5.29869607e+00, 6.55872356e+00, -7.13667306e+00, 5.30684088e+00,\n", " -7.45847529e+00, -3.26229397e+00, -3.01913257e+00, -2.16712947e+01,\n", " -3.77654393e+00, 2.37469409e+01, 4.95151838e+00, -1.42615733e+00,\n", " -5.61376712e-01, -8.61662136e+00, -8.73175364e+00, -1.08036977e+01,\n", " 1.51908379e-01, -5.90683887e-01, 5.93659778e+00, 1.11423454e+00,\n", " -6.79702447e-01, -5.76789047e+00, -1.32984564e+01, -1.68769955e+00,\n", " 6.04105538e-02, -6.66837404e+00, -9.16388676e+00, -1.54550932e+01]),\n", " 'y': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n", " 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1,\n", " 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0,\n", " 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1,\n", " 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n", " 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n", " 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 1, 1, 0]),\n", " 'pred': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n", " 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1,\n", " 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1,\n", " 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0,\n", " 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1,\n", " 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n", " 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n", " 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 1, 1, 0])}" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = generate_classification_results(p_pos=0.9)\n", "r" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'acc': 0.896,\n", " 'bacc': np.float64(0.5),\n", " 'confusion': array([[ 0, 104],\n", " [ 0, 896]]),\n", " 'n': 1000,\n", " 'seed': None,\n", " 'noise_sd': 1,\n", " 'signal_sd': 10,\n", " 'p_pos': 0.9,\n", " 'shuffle': False,\n", " 'thresh': np.float64(-11.641292591387709),\n", " 'clf': None,\n", " 'X': array([-9.91180680e+00, -4.86661300e+00, 2.52586964e+01, 7.45769636e+00,\n", " 5.23023246e+00, -1.69371714e+01, 1.73295178e+01, 1.46053040e+00,\n", " 1.15121414e+01, -1.78255088e+01, 8.66810002e+00, -3.51403145e+00,\n", " 6.67156100e-01, -9.43157850e-01, 8.84251399e+00, 8.55207151e-01,\n", " -2.86461710e-01, 8.68657329e+00, 8.06014793e+00, 1.24574842e+01,\n", " -3.33246436e-01, -2.88697965e+00, -2.71651022e+00, 1.48399972e+00,\n", " -3.38700076e+00, 7.14679145e+00, 8.23363045e+00, -5.71729798e+00,\n", " -2.20369064e+00, 1.59119742e+01, -8.46544617e+00, -4.55688333e-01,\n", " -2.28000652e-01, -3.28379111e+00, 4.01081987e+00, 2.11624336e+01,\n", " 6.85509782e+00, -3.90060595e+00, 1.24550035e+01, 2.41014519e+00,\n", " -7.22182138e-01, -1.15210454e+01, 5.55135970e+00, 3.67328173e+00,\n", " -1.96599820e+00, -5.17721380e+00, -3.17728419e+00, -2.94654153e+00,\n", " 6.54523527e+00, -1.82276131e+01, 2.29074223e+01, 5.26598532e+00,\n", " -1.42734627e+01, 2.72174110e+00, 5.58615374e-01, 3.30534508e+00,\n", " -8.86569168e-01, 1.11110135e+01, -6.37406775e+00, 5.82980785e+00,\n", " -1.22654481e+01, 7.56696518e+00, -1.30876931e-01, 4.28379842e+00,\n", " 4.91736534e+00, 5.78474395e+00, 7.92467921e+00, 2.90358502e+00,\n", " 1.56717582e+01, 2.25884049e+01, -1.12959415e+01, 8.41889027e+00,\n", " 7.38044387e+00, -2.49120424e+00, -3.86038027e+00, -1.17156215e+00,\n", " 3.27298481e+00, 5.85387231e+00, 1.11233029e+01, -1.84296808e+01,\n", " -5.93254059e-01, 9.31427968e+00, 1.19435802e+01, 9.43825542e+00,\n", " -7.76419387e+00, -3.81288547e+00, 5.68912312e+00, 4.95686073e+00,\n", " 1.36127212e+01, 1.46329288e+01, 2.06020208e+00, -1.04183740e+01,\n", " -2.13631497e+00, 1.41229355e+01, 1.22392523e+00, -4.91386813e+00,\n", " 9.17586615e+00, -5.82540646e+00, -1.93462934e+01, 8.78988112e+00,\n", " -1.24215210e-01, 1.43787112e+01, -5.41204705e+00, -4.86424359e+00,\n", " 2.19471518e+00, -5.21884666e+00, -1.11413549e-01, -9.19301973e-01,\n", " -5.58021709e+00, -2.01970104e+00, -8.89530099e-01, 4.35487119e-01,\n", " -4.98928801e+00, 1.19344320e+01, -2.80512512e+01, -2.88261648e+00,\n", " 4.70336952e+00, -2.42514134e+01, 4.44837477e+00, 2.21434892e+00,\n", " -5.14862162e+00, 8.06970979e+00, 1.94499385e+01, 1.65072339e+00,\n", " -4.27204436e+00, -6.23414364e+00, -1.05793350e+01, 6.48740721e+00,\n", " 1.09926832e+00, 2.05445558e+00, -7.34208245e+00, -2.35638234e+00,\n", " 2.15682841e+00, 4.85402186e+00, -1.10581368e+00, -2.70308621e+01,\n", " -9.87787074e+00, -7.48679124e+00, 1.96469175e+00, -8.00935937e+00,\n", " -1.40888285e+01, -1.75942654e+00, -1.03266156e+01, -3.69709850e+00,\n", " 1.39805045e+01, -2.11265408e-01, 2.87503489e+00, 9.30083742e-01,\n", " 7.06607793e+00, -6.67672864e+00, -4.18043797e+00, 1.01051761e+01,\n", " 5.35357718e+00, 3.82854987e-01, -1.84027632e+01, -3.57783251e+00,\n", " 1.10677411e+01, 1.03533748e+01, -3.46879420e+00, 1.20178796e+01,\n", " -1.00082369e+01, 1.73408834e+01, -8.71225360e+00, 9.68233750e+00,\n", " -3.62272614e+00, -4.46621285e+00, -7.64881704e-01, -6.70194355e+00,\n", " -5.12577323e+00, 3.01487701e+00, 6.09225832e+00, -1.55359937e+00,\n", " 7.25879521e+00, -3.01002519e+00, 8.89505734e+00, -2.25597062e+01,\n", " -2.30285574e+01, 4.32835468e+00, 5.54603437e+00, -7.70862407e+00,\n", " 3.55306621e+00, 3.00082537e+00, 3.23955816e+00, -4.10439612e+00,\n", " 1.27487897e+01, -1.53446690e+01, 4.38722643e+00, 4.21387809e+00,\n", " 8.09681165e+00, -7.29944414e+00, 3.36541538e+00, -3.34234446e+00,\n", " -6.53857364e+00, 3.66050419e+00, -5.55734939e+00, -3.31022599e+01,\n", " 9.72045037e+00, 1.48362556e+00, 1.31931641e+01, 4.56155231e+00,\n", " -4.86751078e+00, 1.05394225e+01, 2.29741408e+01, -5.64307522e+00,\n", " 1.50141554e+01, 2.59064985e+00, 4.37400611e+00, -1.43154648e+01,\n", " 7.80794045e+00, 1.76933178e+00, -4.45536142e+00, 3.65647551e+00,\n", " 7.71009509e+00, 9.27591988e+00, 1.17637022e+01, -7.00071620e+00,\n", " 3.69522935e+00, 2.06388963e+00, 4.04335177e+00, 9.92285690e+00,\n", " -5.17655985e+00, 8.74845295e+00, 1.48701826e+01, 1.26682575e+01,\n", " -4.92985132e+00, 1.28246294e+00, 2.24060752e+01, 3.05344352e-01,\n", " -6.37207354e+00, 1.10284916e+01, 1.23894916e+01, 9.86783303e+00,\n", " 1.31123275e+01, 2.88842807e+00, -8.04760898e+00, -1.62027798e+01,\n", " 4.42613906e+00, 8.02740326e+00, -8.65266050e+00, 5.04490351e+00,\n", " -3.34507801e+00, 1.24557151e+01, -1.43282637e+01, 1.85070620e+01,\n", " 8.91097298e+00, -2.89467126e+00, 2.16290107e+00, 4.25458300e+00,\n", " 1.70552429e-01, 2.25748041e+00, -1.25373263e+01, 6.96041013e+00,\n", " -1.41049201e+01, -7.75673079e+00, 6.23270202e+00, -8.73193263e+00,\n", " -4.16137311e+00, 3.71916387e+00, -1.25194827e+00, -2.14360402e+01,\n", " 9.89962825e+00, 2.00545392e+01, -2.41743374e+00, 2.12234837e+00,\n", " 1.11910700e-01, -9.25672195e+00, -1.48106938e+01, 1.00460674e+01,\n", " 9.08414143e-01, -5.34883742e+00, -5.16932677e+00, 6.61260951e+00,\n", " -1.41955834e+01, 2.03085672e+01, -5.20365881e-01, 8.70282133e+00,\n", " -1.48762048e+01, 2.44781233e+01, 1.24770321e+01, 1.74872642e+00,\n", " -1.40395255e+01, 1.74460181e+01, -9.21677768e-01, 5.16682058e+00,\n", " -1.11721767e+01, 1.16419058e+01, -1.18150210e+00, -1.17560743e+01,\n", " -2.40494312e+00, -7.75601627e+00, -1.12863377e+00, -3.80187376e+00,\n", " -2.27976529e+01, -1.61695380e+01, 3.70685487e+00, 2.73896902e-01,\n", " 2.41009659e+00, -1.58964775e+01, -1.27928583e-01, -2.30469046e+01,\n", " 6.29201705e+00, -8.09640463e+00, 6.57136825e+00, 3.55893365e+00,\n", " -4.85124741e-01, 1.17960413e+01, -3.40937781e+00, 1.05078641e+01,\n", " -4.74522586e-01, 6.38710886e+00, 5.50853007e+00, -5.86931901e+00,\n", " -3.37626473e+00, -1.94051473e+00, -2.07906749e+00, 2.78042657e+01,\n", " -4.82736556e+00, -5.07971396e+00, 1.67918569e+01, -1.30801060e+01,\n", " 1.71635962e+00, 3.15863363e+00, 6.36626248e+00, -2.34826105e+01,\n", " -4.42968692e+00, 4.21381851e+00, 8.15408926e+00, -1.51068395e+01,\n", " -1.91463829e+01, -8.12862055e+00, 9.91420000e-01, 2.36309432e+01,\n", " -6.60948903e+00, -1.02137350e+01, 1.08417215e+00, 3.44765990e+00,\n", " 7.08021689e+00, 4.13542052e-01, 9.30140356e+00, 2.72887849e+00,\n", " 1.39669796e+00, -4.02239250e+00, -2.61453120e+00, -1.98450718e+00,\n", " -4.91557547e+00, -1.63154796e+01, 1.28907999e+00, 1.36527850e+01,\n", " 1.74654563e+01, -4.81511515e+00, 9.16873495e-01, 5.62270131e+00,\n", " -2.01565696e+00, 5.13313204e+00, -9.46092352e+00, -3.84507949e+00,\n", " 7.56377956e+00, -6.95166816e+00, 7.70350272e+00, -2.73587365e+00,\n", " 5.34779749e+00, 5.62840207e+00, -1.74572194e+01, -7.36286229e-01,\n", " -1.28320159e+01, -2.01086241e+00, -1.08199936e+01, 1.00336394e+00,\n", " 2.38925540e+01, -8.41998164e+00, 1.27438959e+01, 6.68311240e+00,\n", " 3.16079574e+00, 1.05097423e+01, 4.29032242e+00, 5.66301257e+00,\n", " 1.95087728e+01, 8.00766404e+00, 3.32908768e+00, 3.48935395e+00,\n", " -5.61184665e+00, 1.75095553e+01, 5.45061240e-01, -8.19618886e+00,\n", " 6.84935787e+00, 8.23603320e+00, 4.18909329e+00, -1.68602825e+00,\n", " 1.67698311e+00, -9.13482813e+00, 7.16502157e+00, 7.13872414e-01,\n", " 1.07766632e+00, 7.01939171e+00, -8.32432555e+00, 3.25487170e+00,\n", " 2.18323636e+00, 1.28823252e+01, 1.42886797e+00, 1.21169042e+01,\n", " 1.75203153e+00, 1.30295238e+01, 2.72709788e+00, 5.26758055e+00,\n", " 1.33539720e-01, 4.03232694e+00, -5.79299608e+00, 3.07278740e+00,\n", " 9.33147564e+00, 1.45350883e+00, 6.40614248e+00, 5.97359098e+00,\n", " -3.11095390e+00, -7.57159779e+00, 3.08248924e-01, 3.88896510e+00,\n", " -3.86958199e-01, -1.85301517e+00, -5.13593746e+00, -2.47824658e-01,\n", " 8.60878043e+00, 2.05720076e+01, -6.35454509e+00, 6.54279020e+00,\n", " 1.61088813e+01, -1.32364940e+01, 3.60799929e+00, -6.99182018e+00,\n", " 7.16647904e+00, -4.68386713e+00, -2.17730566e+00, -8.25007964e+00,\n", " -1.10796498e+01, -1.67684188e+01, -1.60208755e+00, -1.24928106e+01,\n", " 3.17437030e+00, 1.35936682e+01, 9.14712802e-03, 3.90691595e-01,\n", " 4.45602039e+00, -5.79148920e+00, 1.58916047e+00, 2.81635916e+00,\n", " 6.39977807e+00, 1.09674116e+01, -1.32652909e+01, -8.71056479e+00,\n", " -1.38769388e+01, 1.92929333e+01, -6.56537208e+00, -5.44063931e+00,\n", " -4.69053012e+00, -1.64421178e+00, 4.59719680e+00, 6.21664590e+00,\n", " 1.48109575e+00, 1.47332263e+01, -5.64021991e+00, -1.98505935e+01,\n", " 1.76049550e+01, 8.51488070e+00, 3.45750779e+00, 1.15298814e+01,\n", " 1.39059284e+01, -3.05307172e+00, 2.02363319e+01, -2.11531644e+01,\n", " 2.25287199e+00, -7.19332615e+00, 6.16580219e+00, 6.13582959e+00,\n", " 8.39761207e+00, -1.16256431e+01, -3.46407627e+00, 1.07680568e+01,\n", " 2.04552990e+01, -2.30058315e+01, 9.03246408e+00, -1.85723024e+00,\n", " -4.18255421e+00, -7.29036178e+00, -8.52379918e+00, -5.57708720e+00,\n", " 2.89223762e+00, 4.22961396e+00, 7.75878977e+00, -3.78646632e+00,\n", " -6.19792426e+00, 9.02107305e+00, -1.77665906e+00, 2.74288139e+01,\n", " -2.25435228e+01, -2.18150312e+01, 1.32576859e+01, -2.15297777e+01,\n", " -1.21914539e+00, 1.34875411e+01, 2.07401424e+00, -2.42637492e+01,\n", " -1.57735341e+01, 5.27465476e+00, -1.56620790e+01, 6.09752072e-01,\n", " -1.00648080e+00, -2.82073886e+00, 5.93344711e+00, -9.59454192e+00,\n", " 1.26811891e+01, 1.50766439e+01, -1.69141477e+01, -1.52962411e+01,\n", " 1.08333871e+00, -1.09283261e+01, -2.22111675e+00, -7.04697309e+00,\n", " 8.78064405e+00, 7.16008574e+00, 5.09337135e+00, 8.51148671e+00,\n", " 1.29565028e+00, 6.22723954e+00, 3.92064045e+00, 2.15954592e-01,\n", " 5.49772710e-01, -6.13604370e+00, -1.72053084e+01, 5.52895315e+00,\n", " -9.96397237e+00, -1.52706766e+01, -3.22156199e+00, -1.24292221e+01,\n", " -2.61893242e+00, 7.07952816e+00, -3.56443073e+00, -8.35610200e+00,\n", " 4.77889017e+00, -2.15468019e-02, 1.82490580e+00, -5.72441857e+00,\n", " 6.51181870e+00, -9.35190564e-01, -1.13217365e+01, 4.17308610e+00,\n", " -3.29011890e+00, 3.99276869e+00, -6.52471911e-03, 9.79124937e+00,\n", " 1.37738530e+01, -2.44826427e+00, 3.81439700e+00, -1.20602806e+01,\n", " 1.31401229e+01, 7.88666227e+00, -1.92923014e+00, -7.68441593e+00,\n", " -6.84965112e+00, 1.29487053e+01, 4.08272596e+00, 1.24392074e+00,\n", " 5.76753063e+00, -3.23906426e-01, -1.40721850e+00, -3.24465475e+00,\n", " 6.79936592e+00, 3.21988844e+00, 1.03815054e+01, 2.16385540e+01,\n", " -6.86259580e+00, 7.27857970e+00, -9.87904937e+00, -4.50481005e+00,\n", " -3.08785679e+00, -4.33717486e+00, 1.37454860e+01, 3.26786195e-01,\n", " -4.91855515e+00, -1.54817627e+01, 3.94417559e+00, 6.66606725e+00,\n", " 2.82953575e+00, -8.72672257e+00, -2.19497435e+01, -1.69825828e+01,\n", " -4.19145681e+00, -1.08049533e+01, 9.37546764e-01, -9.68913673e+00,\n", " 7.92387525e+00, 2.29537849e+00, 4.91872641e-02, 1.45228646e+01,\n", " -4.99002385e+00, 1.08658332e+01, 1.24821627e+01, -1.12732778e+01,\n", " 7.01983955e-02, 2.53325926e+00, 1.44663336e+01, -9.68858753e+00,\n", " -2.12105930e+01, -1.42484085e+01, -1.84658002e+01, 5.14551261e+00,\n", " 8.11512674e+00, -2.20186872e-01, -2.20822397e+01, -3.27057440e+00,\n", " 1.62769729e+01, -1.47243637e+01, 4.75137312e+00, 4.95447514e+00,\n", " 8.28740562e+00, 3.47016933e+00, 1.94746052e+01, 5.13117757e+00,\n", " 1.11021307e+00, 2.47173114e+01, 2.21700994e+00, 1.17952899e+01,\n", " 1.49158754e+01, 3.59921628e+00, 7.03855276e-01, 1.72007887e+01,\n", " 1.25409479e+01, 1.37773789e+01, 4.46877865e+00, 1.45447160e+01,\n", " -2.70994975e+00, -9.32117382e+00, 2.81528103e+00, -4.32569807e+00,\n", " -1.58767439e-01, -8.84355481e+00, 1.46937369e+01, -2.01803672e-01,\n", " 1.56663355e-01, -4.73606316e-01, -1.70013942e+01, 4.21381367e+00,\n", " 2.66383348e+01, 8.51742240e+00, 1.01171015e+01, -4.99702708e+00,\n", " 3.06983597e+01, 6.03391625e+00, -1.44946618e+01, -6.20634987e+00,\n", " 3.29652708e+00, 3.51535855e+00, 1.84874817e+01, -4.68993415e+00,\n", " 1.33883894e+01, 8.55652028e+00, 2.11976926e-01, 2.94505927e+00,\n", " -4.07870849e+00, -9.89327473e+00, 9.96000126e-02, -9.31981465e+00,\n", " 5.56067762e+00, 6.42222343e+00, -4.42952618e+00, 9.65446889e+00,\n", " 1.82412033e+01, 5.42004283e+00, 2.48697266e+00, -6.54049862e+00,\n", " -1.97117327e+01, 9.87703882e+00, 3.46106342e+00, -4.58538069e+00,\n", " -6.36446420e+00, 2.38480015e+00, -1.18239609e+01, 1.67953177e+01,\n", " 6.06416240e+00, -1.56458095e+00, -2.08894278e+00, -6.15578762e+00,\n", " -4.27228379e+00, -8.48891556e-01, 8.87360844e-01, -2.58201246e+00,\n", " -1.59779673e+00, -3.43733204e+00, 8.45596815e+00, -1.16343377e+01,\n", " 1.80050880e+01, 4.96666363e+00, -8.17096949e+00, -1.60775258e+01,\n", " 6.53873748e+00, -6.98526446e+00, 5.63331592e+00, -2.36510532e+00,\n", " -4.74076529e+00, -3.38770810e+00, -1.37881055e+01, -2.34776066e-02,\n", " -1.40708278e+01, 2.94885748e+00, 8.19868319e+00, 1.10550703e+01,\n", " -7.95092138e+00, 6.07413759e+00, 8.16634068e-02, 1.86185721e+00,\n", " -2.56200610e-01, -2.40913567e+01, -6.67573814e+00, 3.62778319e+00,\n", " -1.10924785e+01, -3.92617103e-01, -7.47983904e+00, -5.69203842e+00,\n", " 1.02872020e+01, 1.20128600e+01, -8.12303477e-02, -5.17991458e+00,\n", " 4.20831460e+00, -1.75169837e+01, 6.12172167e+00, 6.68738505e+00,\n", " 1.86485997e+01, -3.37937541e+00, -2.25823410e+01, -2.04410565e+01,\n", " 7.93041754e+00, -3.34944315e+00, 5.12674541e+00, 6.56391741e-01,\n", " -3.12270631e+00, 4.84352521e+00, -1.16380673e+01, 2.20741620e+00,\n", " -6.07174208e+00, 1.07876670e+01, -1.03748473e+00, -1.22598539e+01,\n", " -1.01858807e+01, -2.42354404e+01, 2.56099232e+00, 9.28923218e+00,\n", " 1.12261519e+01, 1.23007999e+01, -5.36857312e+00, -1.84802201e+01,\n", " -6.28294990e+00, 6.91553154e+00, 1.53849043e+01, -4.02340645e+00,\n", " -9.36332064e-02, -7.97568635e+00, 3.91799459e+00, 1.06790435e+01,\n", " 7.81212551e+00, 2.66456221e+01, 1.86680880e+01, 1.59503250e+01,\n", " 1.31513627e+01, 8.02556772e+00, -1.97766307e+00, -4.39761086e+00,\n", " -8.80040429e+00, -1.62671376e+01, -1.64291677e+00, -7.31106018e+00,\n", " 5.05830577e+00, -3.15434153e+00, -4.74587203e+00, -5.84442130e+00,\n", " 9.73559578e+00, 2.44728687e+00, 2.28970828e+01, 2.96655874e+00,\n", " 3.41481502e+00, -1.81393133e+01, 8.62777146e+00, 3.92201500e+00,\n", " -7.18128913e+00, -1.19889940e+01, 4.58878166e+00, -6.77786315e+00,\n", " 5.40571260e+00, -4.31408847e+00, -3.05737656e+01, -1.04245315e+01,\n", " 6.27153926e+00, -1.74392922e+01, -3.53145842e+00, 5.30677353e+00,\n", " -4.22332679e+00, 7.16065419e+00, -1.82680937e+00, 1.60696342e+00,\n", " -1.21822062e+01, -6.19497685e+00, 1.56201231e+01, -1.02583975e+00,\n", " 8.21362813e-01, 1.07713663e+01, 1.44492694e+00, 5.62973858e+00,\n", " -1.71298859e+01, -1.84615476e+00, 5.58574174e-01, 2.36364697e+00,\n", " -1.15355952e+00, -5.43402120e+00, -1.14450996e+00, 4.49380065e+00,\n", " 3.88893403e+00, -6.00654308e+00, 1.24981860e+01, 6.73158005e+00,\n", " -1.15798098e+01, 4.32672328e+00, 5.63314248e+00, -5.47133171e+00,\n", " 5.16199473e+00, -6.67001417e+00, 1.71668304e+01, 6.91731474e+00,\n", " 1.15408327e+01, -8.44311256e+00, -2.60350879e+00, -4.11514323e+00,\n", " 6.98050907e+00, 6.11078361e+00, -8.82317445e+00, -1.93966124e+01,\n", " 5.36619531e+00, 9.91694675e+00, 3.84727538e+00, -1.38639091e+00,\n", " -6.81346070e+00, 1.26949406e+01, 7.23263746e-02, 8.26664180e+00,\n", " 6.87724026e+00, 1.42407492e+00, 1.55379430e+01, -1.16703204e+01,\n", " -1.10450928e+01, -5.16273394e+00, -1.06786805e+01, -6.20892459e+00,\n", " -7.38547178e+00, 1.39286897e+01, -6.39885018e+00, 1.91946717e+01,\n", " 6.92956594e+00, -9.44791736e+00, 1.62197076e+01, 2.30438501e+01,\n", " -5.41191945e+00, 6.81033625e+00, -3.59237608e+00, 2.16860178e+00,\n", " 4.71395960e+00, -5.31768497e-01, 6.32377140e+00, -6.17647846e+00,\n", " -1.05399701e+01, -2.06274669e-01, -8.01288956e+00, 1.51291626e+01,\n", " 8.11019983e-01, -1.43854539e+01, 7.02993304e+00, -1.60759262e+01,\n", " -2.03590847e+00, -1.71397840e-01, 6.35112731e+00, 7.20546008e+00,\n", " -1.61494574e+01, 6.50503032e-01, -9.09934475e+00, 1.89151823e+01,\n", " -2.07391194e+00, 2.52325008e+00, -1.08323444e+00, 7.01459080e+00,\n", " -3.76939363e+00, 1.34616032e+01, -3.59158462e+00, -4.42582871e+00,\n", " -3.95595016e+00, 5.61608393e+00, 2.99850518e+00, 7.51241602e+00,\n", " -8.56639406e+00, -1.96832561e+01, -3.84894035e+00, 1.31073230e+01,\n", " -3.81344034e+00, 5.73331273e+00, 4.30442029e+00, 2.94917879e+00,\n", " -3.09838144e+00, 1.22658865e+01, 2.11192934e+00, 2.99701117e+00,\n", " -7.54493461e-01, 1.34787576e+00, 2.85038952e+00, 1.36777684e+01,\n", " -6.44674900e+00, 2.04105982e+01, 8.26290922e+00, 5.24888403e-01,\n", " 4.51983714e+00, 5.00517294e+00, -8.67236330e-01, -1.06941871e+01,\n", " -1.01826351e+01, 2.95966706e+00, -1.28019433e+01, 1.75328227e+01,\n", " 5.41549722e+00, 1.74335504e+00, 7.73217728e+00, -2.86254151e+00,\n", " 1.96492419e+01, -1.48407353e+01, 6.01427032e+00, -1.56928312e-01,\n", " 8.76225954e+00, 9.48267157e+00, -1.55361658e+01, 9.28554959e+00,\n", " 9.90209271e+00, 6.84101959e+00, -7.96520086e+00, -2.48782438e+01,\n", " -2.78647033e+00, 5.59333027e+00, 1.95920934e+01, -8.99523670e+00,\n", " 1.27493917e+01, -9.69266765e+00, 1.28030936e+01, 5.98798068e-01,\n", " 9.73688393e+00, -6.34213091e+00, -3.43034305e+00, 1.30776986e+00,\n", " -1.14713858e+01, -1.18520855e+01, -6.59248970e+00, -9.21753526e-01,\n", " 8.46198232e+00, -1.60882144e+00, 4.37895727e+00, 1.44248737e+01,\n", " 1.31845529e+01, 1.13425870e+01, -1.44589665e+01, -4.34642727e+00,\n", " 4.39320657e+00, -5.39487642e+00, 7.31668218e-01, 1.17925364e+01,\n", " 1.90199742e+00, 4.70926352e+00, 8.62669009e+00, 1.31506538e+01,\n", " -1.88034072e+00, 6.16581127e-01, -5.71332954e+00, -1.07962202e+01,\n", " 2.16952395e+00, 5.71740769e+00, -6.00321159e+00, -1.12031067e+01,\n", " 6.36859702e-01, 3.41520194e+00, -1.15498976e+01, -2.69705971e+00,\n", " -6.43517720e+00, 5.28717490e+00, 9.91024140e+00, 6.90279952e+00,\n", " -1.19823781e+01, 1.51142056e+01, 5.02094503e+00, -1.05162980e+01,\n", " 1.91051532e+01, -8.62682238e+00, -7.14013286e-01, 9.58194927e+00,\n", " -5.42413060e+00, 1.90104232e+01, -7.06842859e+00, 1.51504230e+01,\n", " 5.44942193e+00, 1.52504760e-01, 2.30548307e+01, -3.91445792e+00]),\n", " 'y': array([1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n", " 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n", " 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,\n", " 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n", " 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1,\n", " 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", " 'pred': array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = generate_classification_results(p_pos=0.9, pred=1)\n", "r" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'acc': 0.805,\n", " 'bacc': np.float64(0.7218452237969413),\n", " 'confusion': array([[148, 128],\n", " [ 67, 657]]),\n", " 'n': 1000,\n", " 'seed': None,\n", " 'noise_sd': 10,\n", " 'signal_sd': 10,\n", " 'p_pos': 0.8,\n", " 'shuffle': False,\n", " 'thresh': np.float64(-9.033025990136332),\n", " 'clf': LogisticRegression(),\n", " 'X': array([ 6.92884901e+00, -8.54685728e+00, 2.73355295e+01, -3.30980315e+00,\n", " -1.09530402e+01, 1.87713081e+01, -4.27771441e+00, -4.24332374e+00,\n", " 2.43273755e+01, 1.12690163e+01, 3.55285060e+00, -2.46919663e+00,\n", " -1.46259624e+01, 1.21136474e+01, 3.02175217e+00, -1.93156454e+00,\n", " 1.83551239e+01, 4.77806478e+00, 1.13148112e+01, -1.06678999e+01,\n", " -2.15906341e+00, 8.09996144e+00, 5.24032510e+00, 6.52227010e+00,\n", " 2.78628726e+00, -1.44382740e+00, 4.60704077e+00, -7.09372421e+00,\n", " -4.83274788e-01, -2.66784320e+01, -1.23718454e+01, -5.96679885e+00,\n", " 3.30606137e+00, -5.74056474e+00, 1.04736830e+01, 8.79095203e-01,\n", " 6.34975221e+00, -7.74186361e+00, -9.12932014e+00, 1.01838899e+01,\n", " 1.59046608e+01, 1.88148966e+01, 8.64023785e-01, 1.05010045e+01,\n", " 1.39500851e+01, 9.45406220e+00, -7.32379797e+00, 9.20281511e+00,\n", " -4.01782621e+00, -1.31565909e+01, 1.19270266e+00, -7.91349328e+00,\n", " 1.29437581e+00, -2.75527270e+01, 1.81109134e+01, -1.29082728e+01,\n", " 4.06230860e+00, -1.98180693e+00, 1.25082005e+00, -7.99859326e+00,\n", " 1.78360642e+00, 2.12872915e+01, 5.77571092e+00, -1.28837392e+00,\n", " -1.34385711e+00, -1.11612481e+01, 4.02125831e-01, 7.26792987e-01,\n", " -2.03922008e+00, -2.51239360e-01, 2.87315090e+00, -1.35869033e+01,\n", " 1.23833623e+01, 1.22593693e+01, 7.96471957e-01, -1.63023442e+01,\n", " 4.40900850e+00, 2.90238030e+00, -3.43618448e+00, 1.14128587e+01,\n", " 3.04403563e+00, 1.30805478e+01, -6.63821456e+00, -2.40482695e+00,\n", " 3.85932561e-01, -1.04280174e+01, 1.09101705e+01, -1.05075639e+01,\n", " -1.89366598e+01, -7.67373384e+00, 2.01269784e-01, -2.36336737e+01,\n", " 1.88016425e+01, 8.99501188e+00, -4.77686049e+00, -1.92311148e+01,\n", " -3.55816266e+00, -8.05193480e+00, -3.36469530e+00, 1.58128385e+01,\n", " -3.00058996e+00, 4.57129624e+00, -3.67623745e+00, -1.22725654e+01,\n", " 1.52409014e+00, 1.14261329e+00, 1.49429035e+00, 1.79421530e+01,\n", " -1.25926457e+01, -2.37644374e+00, -7.73492294e-01, 9.27396835e-01,\n", " -8.39161421e+00, -1.16122468e+01, -1.59744164e+00, 2.78714438e+00,\n", " 1.58247215e+01, 4.44014649e+00, -1.03597065e+01, -1.39167146e+01,\n", " 8.08352234e-01, -1.91266168e+01, -2.77544871e+00, -2.88565140e+00,\n", " -3.95311471e+00, -2.16755577e+00, -1.98085012e+00, 2.21247765e-01,\n", " -4.91841496e+00, -2.06148283e+01, 3.61044136e+00, -1.08050761e+01,\n", " -9.70515848e-01, -3.88794496e+00, 1.89058690e+00, -2.59498084e+00,\n", " -4.00183513e+00, -2.84927582e+00, 1.91276571e+00, 2.20464911e+01,\n", " 5.54606289e+00, -3.14882415e-01, -5.18076311e+00, -1.52475275e+00,\n", " 9.12954190e-01, -1.72719759e+00, -1.13469100e+01, -1.68411972e+01,\n", " 4.80064715e+00, -7.76769391e+00, -5.52740863e+00, 1.32004319e+01,\n", " 6.05684259e+00, 9.91459639e+00, -6.99611542e+00, 1.34477365e+01,\n", " -4.05523081e+00, -8.66530037e+00, -2.41221283e+01, -1.90830611e-01,\n", " 6.21694428e+00, -5.63457512e+00, 8.50713231e+00, -1.31417423e+01,\n", " -6.70238915e+00, 4.25800810e+00, -1.85729816e+00, -1.56474290e+01,\n", " 5.47517587e+00, 5.06836803e+00, 4.09511910e+00, 4.51206877e+00,\n", " -5.99236717e+00, -6.59993496e+00, 1.65371697e+00, -3.71160386e+00,\n", " -6.47169891e+00, 5.87290114e+00, -2.01316747e+01, -9.31527534e+00,\n", " -4.50983933e+00, -1.92370090e+00, 2.31464260e+01, -3.51604471e-01,\n", " -3.17832656e+00, 1.00372300e+01, -1.61469264e+00, -1.60989737e+01,\n", " 1.11154662e+01, 1.09561070e+01, -9.67112079e+00, -1.29745326e+01,\n", " -4.65494202e+00, -6.70755219e+00, -1.03939779e+01, 8.37675000e+00,\n", " 3.12524698e+01, -1.53137739e+01, -2.06110839e+01, 1.59406804e+01,\n", " -4.03199917e+00, -1.49199835e+00, 7.05200045e+00, 1.06014171e+00,\n", " -1.31081470e+01, 5.07304872e+00, 2.35326723e+00, -1.39062333e+01,\n", " -1.75261092e+00, 8.47353482e+00, -6.98637568e+00, 2.00951915e+00,\n", " -1.92542707e+00, -9.72850401e+00, 5.31408831e+00, -1.54752085e+00,\n", " -5.14016494e+00, -1.39253815e+00, 2.63586438e+00, -2.71908924e+00,\n", " -1.28157534e+01, 5.74664207e+00, -1.28925359e+00, 1.88738375e+00,\n", " -4.30273078e+00, -3.24136453e+00, -9.50719529e+00, 6.78074769e+00,\n", " -1.36857512e+01, -4.54982811e+00, -1.45929853e+01, 1.56507370e+01,\n", " -1.06590613e+01, 4.13557066e+00, 3.61533345e+00, -2.28614188e+00,\n", " 1.73247689e+01, -1.61510952e+01, 2.03890276e+00, -1.48451926e+01,\n", " 4.68794055e+00, 1.77058883e+01, -2.31952146e+00, 5.23367146e+00,\n", " -1.06210304e+01, 1.32771819e+01, -9.12407096e+00, -2.60442685e+00,\n", " 1.50278233e+00, -7.17972634e+00, -9.67062311e+00, -8.37286975e-01,\n", " 2.31937509e+01, -1.94233697e-01, -7.73553395e+00, 3.77773950e+00,\n", " 7.40673674e+00, -2.49166091e+01, 3.19865835e+00, -7.58386005e+00,\n", " -1.12040824e+01, 5.83824924e+00, 5.47367141e+00, 3.99207219e+00,\n", " 8.58406825e+00, -1.40845479e+01, 1.94802696e+00, -1.01578248e+01,\n", " 1.32997962e-01, 1.63139507e+01, -2.46211213e+00, -4.22864395e+00,\n", " 8.94992803e+00, -5.13634828e+00, 7.13446506e+00, -2.38514236e+00,\n", " 2.54474598e+00, 7.84468576e+00, -9.04492160e+00, -8.86323503e+00,\n", " 7.54507654e+00, 1.21215440e+01, 1.27337835e+01, 4.37408655e+00,\n", " 1.79538125e+00, -5.57465436e-01, -5.21294199e+00, -1.07583453e+01,\n", " 7.40840138e+00, 6.85282455e+00, -1.61884130e+00, 1.63164993e+00,\n", " 1.02693998e+00, 4.92771156e+00, 1.29973238e+01, -1.68043303e+01,\n", " 1.35002819e+01, 1.31728915e+01, 7.56955107e+00, 7.93402672e-01,\n", " -1.11380959e-01, 9.26499313e+00, 1.25700956e+00, -1.01862551e+01,\n", " -1.33434017e+01, -2.18214217e+00, -1.89323532e+00, -1.55382459e+01,\n", " 5.59983934e-01, -5.22475822e-01, 2.64141961e+00, -4.49060850e+00,\n", " 1.01531600e+01, -3.47463318e-01, 1.59469957e+01, 1.94261775e+00,\n", " 1.51187866e+01, 3.78539101e+00, -3.64727746e+00, 5.06295908e+00,\n", " 3.28383669e+01, -2.70969346e+00, -9.27458391e+00, -1.18565422e+01,\n", " 9.65364650e+00, -1.71147435e+01, 6.45984126e+00, 1.82504707e+01,\n", " 1.35565677e+01, -3.32956733e-01, -7.68038640e+00, -5.87207851e+00,\n", " -2.13271467e+00, 1.92104683e+01, 4.56514784e+00, 2.25312873e+00,\n", " 4.20042679e-01, -8.60657622e+00, -8.65308584e+00, 2.86560897e+00,\n", " 1.97439116e+01, 3.60155466e-01, -1.07856463e+01, 1.32472433e+00,\n", " 9.49806866e+00, -4.61222450e+00, -8.46663007e+00, -6.85382156e+00,\n", " 9.22569531e-01, -8.37193202e+00, -6.89565833e+00, -5.50657470e+00,\n", " -1.30255652e+01, -1.33108062e+01, -2.65502328e+00, 7.58092714e+00,\n", " -7.22479555e-01, 1.56488075e-01, -1.65751327e+00, 1.05258324e+00,\n", " -3.34767346e+00, 1.69646687e+00, 9.87078309e+00, 2.30922223e+00,\n", " -8.83721454e+00, -2.19407621e+00, -5.82749294e+00, 6.14662323e+00,\n", " -1.69011688e+01, -1.14262620e+01, 1.45255052e+01, -8.16873522e+00,\n", " 1.13026752e+00, 2.70605179e+01, 1.00910122e+01, 7.24495551e+00,\n", " -7.03020719e+00, -2.03717750e+00, -1.46797367e+01, -3.43924883e+00,\n", " -6.53415557e+00, 5.89539189e+00, -1.00000828e+01, -4.25333021e+00,\n", " -3.52242922e+00, 9.22212008e+00, 2.47828079e+00, -3.28830354e+00,\n", " -9.24154738e+00, 2.53782604e+00, 7.12596233e+00, 1.10824317e+01,\n", " 4.90718884e+00, -9.55163105e+00, -2.25812348e+01, -1.46110933e+01,\n", " 1.00888242e+01, -3.56467151e+00, 1.16325029e+01, -1.13988799e+01,\n", " 7.85638077e+00, 3.40747701e+00, 9.74082572e-01, 7.58562710e+00,\n", " 7.76051019e+00, -8.79959347e+00, 2.88118272e-01, -2.92936242e+00,\n", " 3.00956198e+00, -3.91772387e+00, -4.57747464e-01, -1.32331071e+01,\n", " -2.33767481e+00, 2.07534312e+00, -3.57745947e+00, -1.39493386e+00,\n", " 8.20378381e+00, 2.13509595e+01, 7.97642561e+00, 8.18724974e+00,\n", " 1.93661177e+00, -5.18504439e+00, -5.22291850e+00, 1.18701255e+01,\n", " 3.87904397e-01, -1.10183939e+01, 9.83390503e+00, -2.30701667e+00,\n", " 3.69891181e+00, -6.02429156e+00, 8.75030694e+00, 7.91525628e+00,\n", " 1.18526554e+01, -1.79657139e+01, -3.90350781e+00, 1.50716227e+01,\n", " 4.02015946e+00, -5.62113677e+00, 9.46094742e+00, -1.48572373e+00,\n", " -1.27032671e+01, -7.03352643e+00, 9.82479951e+00, 1.92152020e+01,\n", " 8.49749965e+00, -1.81785598e+01, -3.43534225e+00, 2.59734581e+01,\n", " 6.23137355e+00, 7.87794704e+00, -1.45529692e-01, 4.02202448e+00,\n", " -6.73081483e+00, 2.14494505e+00, -8.31388127e+00, 1.73312378e+00,\n", " 1.56871783e+01, -1.60641060e+01, 3.55238750e+00, 5.95838394e+00,\n", " 1.22700820e+00, 4.12515909e+00, -9.95603224e+00, -1.02433907e+01,\n", " 1.11689547e+00, 1.02413476e+01, -7.76592943e+00, 1.04368442e+01,\n", " 2.26167339e+01, -1.41447677e+01, -1.75778323e+01, -3.45267720e+01,\n", " -1.12190756e+01, -1.55673555e+00, -7.91274123e-01, 2.35610011e-01,\n", " 2.31504752e+01, 2.32985629e-01, -6.32232562e+00, 1.16417684e+01,\n", " -1.67148245e+00, 5.03288546e+00, -1.20637508e+01, -7.02688738e+00,\n", " 1.03661032e+00, 3.16270173e+00, -5.03456948e+00, 5.92380327e+00,\n", " 9.17797672e+00, -9.11971590e-01, -1.07826115e+01, -9.25162926e+00,\n", " -7.36205493e+00, 4.75720384e+00, 1.75789841e+01, 1.26319010e+01,\n", " -3.63804226e+00, -1.28715359e+01, -2.56557835e+00, -8.83118810e+00,\n", " 5.50802645e+00, 6.94064547e+00, -9.71243980e-01, -1.00583492e+01,\n", " -1.17688629e+01, 2.30010523e+00, -9.90486435e+00, -5.34841754e+00,\n", " 7.79398128e+00, -8.03009231e+00, -5.91880624e+00, -1.05246517e+01,\n", " 3.79001175e+00, 8.71405367e+00, 6.99300477e+00, -3.35569505e+00,\n", " 4.86258601e+00, -1.16247990e+00, -8.47643932e+00, -1.21417947e+00,\n", " 1.03621090e+01, -8.65716671e+00, 8.21886110e-01, -1.08927501e+01,\n", " 8.72344790e+00, 1.82119898e+01, 1.44608308e+00, -1.12468263e+01,\n", " -1.67661377e+01, -3.98453337e+00, -2.82250597e+01, 4.38935935e+00,\n", " 1.38357135e+00, 2.08443285e+00, -1.72060730e+00, -5.96423361e+00,\n", " -4.23793762e+00, 4.07097788e+00, 2.22722146e+01, -1.25517052e+01,\n", " -4.86327623e+00, -7.96521580e+00, -6.36944233e+00, -3.44678117e+00,\n", " -3.49622034e+01, -9.46776180e+00, 1.58045054e+01, -2.20240498e+00,\n", " 1.01166965e+01, 1.50328018e+00, -1.44407725e+01, 2.52839808e+00,\n", " -1.50964708e+01, -1.42731332e+01, 1.49675525e+01, 2.15997015e+01,\n", " -1.28426471e+00, -5.50841256e-01, -2.50703726e+00, -1.36785429e+01,\n", " 1.52443102e+00, 4.36427597e+00, -8.81314563e+00, 6.53112666e+00,\n", " -8.24374918e+00, 1.78384732e+01, -2.13786256e+00, -5.08032891e+00,\n", " 1.37694152e+01, -1.23055783e+01, -1.58905020e+00, 5.97813602e+00,\n", " -6.51755710e+00, -1.28039423e+01, -7.95883554e+00, 1.54381101e+01,\n", " 4.19502632e+00, -3.75454903e+00, 1.26285113e+01, 5.30076657e+00,\n", " -4.34528876e+00, 1.16977730e+00, 3.08603489e-01, 4.70528704e+00,\n", " -6.27100025e+00, -1.12787571e+01, 1.21564711e+01, -8.83741213e-01,\n", " -7.59274835e+00, -5.65994452e+00, -1.16515250e+01, 2.41548737e+00,\n", " -7.42722573e+00, 8.89376176e+00, -1.51635556e+01, -2.08344246e+01,\n", " 1.35352384e+01, -3.49637065e+00, 5.69291678e+00, -3.25227612e+00,\n", " 1.22119603e+01, -7.50515902e+00, 1.48719153e+01, 1.01073768e+00,\n", " -2.30877365e+00, -8.29665366e+00, 1.74645116e+01, -1.26404700e-01,\n", " 3.80787774e+00, 1.00126443e+01, -1.60998268e+01, -9.03005209e+00,\n", " 2.95432442e+00, 6.74394005e+00, -7.04557512e+00, 1.75302056e+01,\n", " 1.02495955e+01, -2.10805478e+01, -5.07298669e+00, 4.35782104e+00,\n", " -9.07833931e+00, -1.33758851e+01, -1.24995697e+01, 7.91468783e+00,\n", " -7.13872282e+00, 6.79178951e+00, 6.35064710e+00, -9.11889115e+00,\n", " 8.45397813e+00, 1.04585914e+01, -1.57727161e+01, 2.13295084e+00,\n", " 9.49088458e-01, -1.32727409e+01, -1.38501742e+01, 4.38288481e-01,\n", " 1.83844073e+01, -1.09147680e+01, 2.26977097e+00, 2.45940506e+00,\n", " -1.48774685e+01, -1.18313746e+01, -9.82379455e+00, 4.01745963e+00,\n", " -7.42273586e+00, 8.01318281e+00, 9.69735024e-01, 2.85630964e+00,\n", " 9.38378679e+00, 9.58207559e-01, 7.48772423e+00, -8.79902017e+00,\n", " 2.37350450e+00, 4.58325640e+00, 1.19846890e+01, 4.10866433e+00,\n", " -4.80410547e+00, -1.15360771e+01, -4.20723254e+00, -6.41557156e+00,\n", " 8.30875661e+00, -5.96608864e+00, -5.57751878e+00, -9.44906955e+00,\n", " 1.36788548e+01, 7.94298613e-01, -1.21284414e+01, -2.45546643e+01,\n", " 4.27025436e-01, 2.84188590e+00, -1.26468621e+00, 9.07265006e-02,\n", " 2.78531786e+00, 8.69577958e+00, -3.87924390e+00, -1.26081625e+01,\n", " -1.76429525e+01, 3.59339826e+00, -7.32972202e+00, -3.28515711e+00,\n", " -2.50806585e+00, 1.13958012e+00, 7.80794036e+00, 8.44887577e+00,\n", " -1.22395122e+01, -5.01508391e+00, 1.56196461e+01, 4.26980229e+00,\n", " 1.14846152e+01, -1.18073767e+01, -1.23700350e+01, -8.11142965e-01,\n", " 1.49241895e+01, 1.22372017e+00, -7.53149505e+00, -4.63471614e+00,\n", " 1.72219740e+01, 1.09561422e+01, -4.11058529e+00, 8.89971569e+00,\n", " -1.15737223e+01, 3.94879827e+00, 2.18298100e+00, -4.34502917e+00,\n", " -1.33466899e+01, 9.09352300e+00, -1.59927844e+01, 3.57747091e+00,\n", " 1.35855805e+01, -8.40038677e+00, 1.16328966e+01, 7.15699703e+00,\n", " 8.80669245e-01, 1.17275828e+01, 1.47414805e+01, 5.88804362e+00,\n", " -1.59150371e+00, -1.06545423e+01, 1.00255423e+01, 1.20663036e+01,\n", " 8.06123324e-01, 4.03648357e-01, 7.84096730e+00, -1.74071742e+01,\n", " 4.47464301e+00, -1.75722650e+01, 4.47313881e+00, -1.45939680e+01,\n", " 1.42801080e+01, -5.53523963e-01, -6.69319448e+00, 4.56002378e+00,\n", " -1.97218233e+01, -9.10953434e-01, 6.15091200e+00, -6.42957663e+00,\n", " -1.59237863e+01, 2.46388514e+01, 2.12666781e+01, 5.18832989e+00,\n", " 9.14610196e+00, 1.12313206e+01, -7.32722092e+00, -5.55963340e+00,\n", " 9.15561983e+00, -6.55319367e+00, 9.75822784e+00, -1.14817292e-01,\n", " 1.23015930e+01, 1.53273898e+01, -1.76921635e-01, 8.52313054e-01,\n", " -1.18677073e+01, 7.08351249e+00, 9.01773365e+00, -2.69884553e+01,\n", " -1.42600567e+01, 2.68131361e+00, 2.52000629e+00, 8.07299070e-01,\n", " 2.80643474e+00, -1.14866662e+01, 1.38719619e+01, -8.16009622e+00,\n", " -6.55621538e+00, -9.09380752e+00, -8.84945158e-01, 1.63686392e+01,\n", " -1.39614359e+01, 2.65244394e+00, -4.62334327e+00, -8.74590899e+00,\n", " 7.88765799e+00, 8.41631991e+00, -1.17306928e+01, 9.43578910e-02,\n", " -9.61257290e+00, -5.14964561e+00, 2.86381011e+00, -1.45458070e+01,\n", " -1.13874806e+01, -1.50623411e+01, 7.52425457e+00, -1.90190006e-01,\n", " -5.28150052e+00, 2.50954850e+01, 2.51883737e+00, -3.54531706e+00,\n", " -1.60484511e+01, 3.79966722e+00, -3.94808280e+00, 3.12683596e+00,\n", " 1.35411600e+01, -1.87526423e+01, 1.02476533e+01, 4.67640330e+00,\n", " 2.26878411e+00, -2.08960271e+00, 4.52412481e+00, -4.79671072e+00,\n", " 4.24796874e+00, -3.24951026e+00, 1.04451510e+01, -1.31702733e+01,\n", " 8.12979887e+00, 2.20554896e+00, -6.00533974e+00, -5.77281251e+00,\n", " 3.11857545e-02, -5.79801395e+00, 9.29525631e+00, -2.10996381e+00,\n", " 3.31108609e+00, -8.61224131e+00, -1.46578559e+01, -1.06918078e+01,\n", " 1.14877788e+01, -1.06475245e+01, -5.31494009e+00, 1.09178416e+01,\n", " -1.45857500e+01, 1.19075434e+01, -1.59496566e+00, -4.70573498e+00,\n", " -4.23451665e+00, -1.43843920e+01, -1.14001039e+01, -1.08505229e+01,\n", " 6.86164776e+00, -3.38578352e+00, -1.49090027e+01, 4.73446655e+00,\n", " 1.41685489e+01, 1.10038993e+01, -1.07965388e+01, 6.68648368e+00,\n", " -1.24485731e+01, -3.14052489e+00, -2.13798334e+01, 2.35602365e+01,\n", " -4.62476335e+00, -1.56897545e+01, 1.75962468e+01, -1.17950847e+01,\n", " -1.31994305e+00, 1.07849697e+01, -1.91306549e+01, 3.05235213e+01,\n", " 8.98523673e+00, 2.10788765e+01, -2.40527560e+00, -2.37363095e+00,\n", " 1.41616848e+01, -6.36989783e+00, 2.82109686e+00, 9.95663982e+00,\n", " 1.92856526e+00, 8.69675531e+00, -1.09547496e+01, 1.94778906e+00,\n", " 6.33226254e+00, -5.57046962e+00, 9.50699281e+00, -9.05158414e+00,\n", " -3.75377807e-01, -1.41419913e+00, 2.32173911e+01, -9.87527083e+00,\n", " -1.61647237e+00, -7.36777272e+00, 3.16933886e+00, 1.16578387e+00,\n", " 1.88686281e+01, -9.83174223e+00, -5.70181910e+00, 3.41244647e+00,\n", " -7.34094266e+00, -5.57953138e+00, -1.72188338e+01, 2.34990257e-01,\n", " 1.79150176e+01, 4.12078772e+00, -1.70261470e+01, 3.16419453e-02,\n", " 2.92897079e+00, -9.09515871e+00, 7.50902461e+00, -5.51802752e+00,\n", " 3.96615738e+00, 1.09857084e+01, -9.56458034e+00, 1.94534766e+00,\n", " 1.73310425e+01, 2.10842850e+00, 2.43904644e+01, 5.78201170e+00,\n", " -1.60215978e+01, -2.51244774e+00, 5.69878976e+00, -2.28895023e+00,\n", " -8.90656192e+00, 2.62803104e+00, -1.54730138e+01, 3.32144719e+00,\n", " 5.98715131e+00, 1.12651907e+01, 5.33979387e+00, -1.92347183e+00,\n", " 3.48896866e+01, -3.06803559e+00, 6.06003788e+00, -2.57887802e+01,\n", " -3.75539996e+00, 2.20175470e-02, -6.69320967e+00, -1.34982286e+01,\n", " -1.08985826e+01, -1.20726423e+01, 6.34370611e+00, -7.24783314e+00,\n", " 1.17432724e+01, 1.13089945e+01, -1.16554212e+00, 1.38580619e+01,\n", " -3.71397674e+00, -6.61208902e+00, -1.83942640e+01, -1.49304369e+01,\n", " -1.74801850e+01, 1.24270190e+01, -4.04490313e+00, 1.53893697e+01,\n", " -1.94797277e+00, -9.97438179e+00, -1.66634454e+01, -2.41922420e+01,\n", " -9.59052311e+00, -5.34888016e+00, 1.32201887e+01, 5.63808910e+00,\n", " 5.28304303e+00, -3.39994072e+00, -8.22896090e+00, -4.95051637e+00,\n", " 1.29705802e+01, 1.10049861e+00, -7.29796935e+00, -1.16137439e+01,\n", " 4.67761932e+00, -1.63064405e+01, 1.35495174e+01, 6.57316303e+00,\n", " 7.60394103e+00, 8.44539752e+00, -5.50588822e+00, -4.68837521e+00,\n", " 3.65693770e+00, -1.20486574e+01, 2.30145013e+01, 7.16973949e+00,\n", " 1.59228209e+01, -3.31048317e-01, -7.09085143e-01, -1.72495480e+00,\n", " -8.20207059e-01, 1.31560310e+00, -1.94781658e+01, -5.57077142e+00,\n", " 1.13277569e+00, 6.04369393e+00, -5.78326282e+00, 1.00355336e+01,\n", " -5.75978942e+00, 3.97441294e+00, -5.10644105e+00, 2.29474518e+01,\n", " -1.11114824e+01, -1.65217525e+01, 8.89851483e-01, 1.99217165e-01,\n", " 6.08311577e+00, 1.23563485e+01, -3.77322283e+00, 1.49293226e+01,\n", " -9.89429772e+00, 6.79068667e+00, -4.86927658e-01, -5.07624993e+00,\n", " -2.19101541e+00, -6.44909289e+00, 1.21796192e+00, 5.27684159e-01,\n", " -2.54629931e+00, -4.69723963e+00, -5.92514137e+00, -2.77220797e+00,\n", " 1.06236390e+01, -4.34598315e+00, 1.23199784e+00, 3.92188029e+00]),\n", " 'y': array([1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0,\n", " 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0,\n", " 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1,\n", " 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0,\n", " 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1,\n", " 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0,\n", " 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1,\n", " 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1,\n", " 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,\n", " 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0,\n", " 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1,\n", " 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0,\n", " 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,\n", " 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1,\n", " 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,\n", " 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1,\n", " 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0,\n", " 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1,\n", " 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1,\n", " 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0,\n", " 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1,\n", " 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1,\n", " 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n", " 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1,\n", " 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1,\n", " 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,\n", " 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1,\n", " 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1,\n", " 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1,\n", " 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1,\n", " 1, 0, 1, 1, 1, 0, 1, 1, 1, 1]),\n", " 'pred': array([1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n", " 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0,\n", " 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1,\n", " 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0,\n", " 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n", " 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1,\n", " 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1,\n", " 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,\n", " 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0,\n", " 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,\n", " 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n", " 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,\n", " 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1,\n", " 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0,\n", " 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1,\n", " 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1,\n", " 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1,\n", " 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1,\n", " 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0,\n", " 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1,\n", " 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1,\n", " 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n", " 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0,\n", " 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1,\n", " 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n", " 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n", " 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1,\n", " 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1,\n", " 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1,\n", " 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.naive_bayes import GaussianNB\n", "\n", "clf = GaussianNB()\n", "r = generate_classification_results(p_pos=0.8, clf=clf, noise_sd=10)\n", "r" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(0.5)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r_shuf = generate_classification_results(p_pos=0.8, clf=clf, noise_sd=10, \n", " shuffle=True)\n", "r_shuf['acc']\n", "r_shuf['bacc']" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 9.444444444444438, 'Predicted probability')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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3XabVq5cGexaAAAA6tWsKywnTpzQs88+q7feekuDBg2q8/niggULglIcAACA1MzA8umnn2rIkCGSpM8++8xnGTfgAgCAYGtWYHn33XeDXQcAAMAZNeseFgAAgFBq1hWWyy+/vMGPft55551mFwQAAJyxYsUK3XPPPdq3b5/cbrd3/nXXXadOnTppxYoVjtXWrCssQ4YM0eDBg72vAQMG6OTJk9q8ebMGDhwY7BoBAEAIXH/99aqqqtLrr7/unVdSUqK///3vuuWWWxysrJlXWB5//PF652dlZenIkSMtKggAADgjKipKEydO1LJly3T99ddLkl588UX16tVLo0ePdrS2oN7D8tOf/pTvEQIAoA37+c9/rjVr1mjv3r2SpGXLlunmm292/CngoAaWjz/+WJGRkcHcJQAACKGLLrpIgwcP1ooVK7R582bl5ubq5ptvdrqs5n0kNGHCBJ9pY4wKCwu1ceNGPfjgg0EpDAAAOOO2227T448/rr179+qqq65ScnKy0yU1L7DExcX5THfo0EH9+/fXww8/rLFjxwalMAAA4IxJkybp3nvv1dKlSx19Mqi2ZgWWZcuWBbsOAABgidjYWF133XV64403NH78eKfLkdTMwHLapk2b5PF45HK5NGDAAF100UXBqgsAADiosLBQkyZN8unH4qRmBZbi4mL9+Mc/1nvvvadzzjlHxhiVlpbq8ssv16pVq9S9e/dg1wkAAELg4MGDWrNmjd555x0tWrTI6XK8mvWU0K9+9SuVlZVp27ZtOnjwoA4dOqTPPvtMZWVluvvuu4NdIwAACJHMzEzdfvvtmjdvnvr37+90OV7NusLy5ptv6q233lJGRoZ33oABA/TUU09x0y0AAG3Y7t27nS6hXs26wlJdXa3w8PA688PDw1VdXd3iogAAAGprVmC54oorNHXqVO3bt887b+/evbrnnnt05ZVXBq04AAAAqZmBZdGiRSovL1fv3r113nnnqV+/furTp4/Ky8v15JNPBrtGAADQzjXrHpbk5GRt3rxZ2dnZ+ve//y1jjAYMGKCrrroq2PUBAAAEFljeeecd3XXXXVq/fr1iY2M1ZswYjRkzRpJUWlqqCy64QE8//bS+/e1vt0qxAID2q7KyUrm5uT7zBg4cWO89lTj7BBRYFi5cqJ///OeKjY2tsywuLk633367FixYQGABAARdbm6uPK/MU0ZKTa8vT8F+SfcrMzPT2cIcVFBQoJKSkpAcKz4+XikpKSE5Vn0CCiyffPKJ5s2bd8blY8eO1e9///sWFwUAQH0yUrorM72n02VYoaCgQOdnZOj4sWMhOV5UdLT+7fE4FloCCixff/11g5fewsLCtH///hYXBQAAGlZSUqLjx45p0v2PKSHlvFY91tcFu/TivPtUUlIScGBZvHixHnvsMRUWFuqCCy7QwoULm/VJTECBpWfPnsrNzVW/fv3qXf7pp5+qR48eARcBAACaJyHlPPVKu8DpMur10ksvadq0aVq8eLEuvfRSPfPMMxo3bpy2b98ecPAJ6LHmq6++Wr/5zW904sSJOsuOHz+u2bNn6wc/+EFABQAAgLPTggULdOutt+q2225TRkaGFi5cqOTkZC1ZsiTgfQV0heXXv/61Xn31VaWnp+uuu+5S//795XK55PF49NRTT6mqqkqzZs0KuAgAAHB2OXnypDZt2qQHHnjAZ/7YsWO1bt26gPcXUGBJSEjQunXr9Mtf/lIzZ86UMUaS5HK59N3vfleLFy9WQkJCwEUAAICzS0lJiaqqqurkgoSEBBUVFQW8v4Abx6Wmpmr16tU6dOiQ8vLyZIxRWlqaunTpEvDBAQDA2c3lcvlMG2PqzGuKZnW6laQuXbroW9/6VnM3BwAAZ7H4+Hh17NixztWU4uLiZn0a06zvEgIAAGhIRESEhg4dquzsbJ/52dnZGjlyZMD7a/YVFgAA4LyvC3ZZe4zp06frpptu0rBhwzRixAg9++yzKigo0B133BHwvggsAAC0QfHx8YqKjtaL8+4LyfGioqMVHx8f0DY33nijDhw4oIcffliFhYW68MILtXr1aqWmpgZ8fAILAABtUEpKiv7t8Vj/XUJTpkzRlClTWnx8AgsAAG1USkqKo19IGErcdAsAAKxHYAEAANYjsAAAAOsRWAAAgPUILAAAwHoEFgAAYD0CCwAAsB59WAAAaKMKCgqsbxwXLAQWAECbVFlVpTyPR5Lk8XiUbqodrii0CgoKlJFxvo4dOx6S40VHR8nj+bdjoYXAAgBok/L2HtThbSukI2nK37BD8X27Skp2uqyQKSkp0bFjx/W//32DMlK6t+qxPAX79dM5f1ZJSUlAgeX999/XY489pk2bNqmwsFCvvfaaxo8f36waCCwAgDarX1IXZab3lKdgv9OlOCYjpbsy03s6XUa9jh49qsGDB+uWW27Rdddd16J9EVgAAECrGDdunMaNGxeUffGUEAAAsB6BBQAAWI/AAgAArEdgAQAA1iOwAAAA6/GUEAAAbVgoHulu7jGOHDmivLw873R+fr62bt2qrl27BtyAjsACAEAbFB8fr+joKP10zp9Dcrzo6CjFx8cHtM3GjRt1+eWXe6enT58uSZo8ebJeeOGFgPZFYAEAoA1KSUmRx/Nvq79LaPTo0TLGBOX4BBYAANqolJQUR7+QMJS46RYAAFjP0cAyd+5cfetb31JMTIzOPfdcjR8/Xp9//rnPOsYYZWVlKSkpSVFRURo9erS2bdvmUMUAAMAJjgaWtWvX6s4779T69euVnZ2tU6dOaezYsTp69Kh3nfnz52vBggVatGiRcnJylJiYqDFjxqi8vNzBygEAQCg5eg/Lm2++6TO9bNkynXvuudq0aZO+853vyBijhQsXatasWZowYYIkafny5UpISNDKlSt1++2319lnRUWFKioqvNNlZWWtexIAgFZRWVWlPI/HO+3xeJRuqh2sCE6y6h6W0tJSSVLXrl0l1TyvXVRUpLFjx3rXcbvdGjVqlNatW1fvPubOnau4uDjvKzk5ufULBwAEXd7egzq8boWU87yU87zy31mugwcOOl0WHGJNYDHGaPr06brssst04YUXSpKKiookSQkJCT7rJiQkeJf5mzlzpkpLS72vPXv2tG7hAIBW0y+pizLTeyozvaf6JHZxuhw4yJrHmu+66y59+umn+vDDD+ssc7lcPtPGmDrzTnO73XK73a1SIwAAcIYVV1h+9atf6fXXX9e7776rXr16eecnJiZKUp2rKcXFxXWuugAAgLOXo4HFGKO77rpLr776qt555x316dPHZ3mfPn2UmJio7Oxs77yTJ09q7dq1GjlyZKjLBQAADnH0I6E777xTK1eu1P/93/8pJibGeyUlLi5OUVFRcrlcmjZtmubMmaO0tDSlpaVpzpw5io6O1sSJE50sHQAAhJCjgWXJkiWSar5roLZly5bp5ptvliTNmDFDx48f15QpU3To0CENHz5ca9asUUxMTIirBQAATnE0sDTlC5FcLpeysrKUlZXV+gUBAIKqsrJSubm5PvMGDhyo8PDwOsvos4KGWPOUEADg7JObmyvPK/OUkdJdkuQp2C/pfmVmZtZZlr9hh+L7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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pred_proba = r['clf'].predict_proba(r['X'].reshape(-1, 1))[:,1]\n", "pred_df = pd.DataFrame({'X': r['X'], 'y': r['y'], 'pred_proba': pred_proba})\n", "sns.displot(pred_df, x='pred_proba', hue='y', bins=100)\n", "plt.xlabel('Predicted probability')" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.metrics import roc_curve, roc_auc_score\n", "\n", "fpr, tpr, _ = roc_curve(r['y'], pred_proba)\n", "plt.plot(fpr, tpr)\n", "plt.xlabel('False positive rate')\n", "plt.ylabel('True positive rate')\n", "plt.title('ROC curve')\n", "plt.plot([0, 1], [0, 1], linestyle='--', color='gray')\n", "# fill area under curve\n", "plt.fill_between(fpr, tpr, color='lightgray')" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(0.8496426855632958)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "roc_auc_score(r['y'], pred_proba)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.float64(0.5)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "roc_auc_score(r_shuf['y'], r_shuf['pred'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Assessing regression peformance\n", "\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "def generate_regression_data(n=50, nfeatures=40, noise_sd=1,\n", " seed=None):\n", " rng = np.random.RandomState(seed)\n", " X = rng.normal(size=(n, nfeatures))\n", " beta = rng.normal(size=nfeatures)\n", " y = X @ beta + noise_sd * rng.normal(size=n)\n", " return(X, y, beta)\n", "\n", "X, y, beta = generate_regression_data(seed=1)\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "R2: 0.995\n", "correlation: 0.998\n", "R2 (0.995) is ~equal to r^2 (0.995)\n" ] }, { "data": { "text/plain": [ "Text(0.5, 1.0, 'Linear regression - in sample prediction')" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHFCAYAAADyj/PrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJLUlEQVR4nO3de1iUdf7/8deAOAMqo4gyYKhkJ8kjlYpu6yGPFWkeNrdcsVYzW79mZqZZIZa66pYdPWwHzSzTfrW1drCs7LRqeKxMty3Dw7qQBxIMA5S5f3+4M8twnIGBGWaej+uaK+fmnnve3I3w8nM0GYZhCAAAIAiE+LoAAACAukLwAQAAQYPgAwAAggbBBwAABA2CDwAACBoEHwAAEDQIPgAAIGgQfAAAQNAg+AAAgKBB8EGtWrVqlUwmk3bs2FHhOQcPHpTJZNKqVavqrjDUWJ8+fdSnTx9fl1Gl+lJnbXP8XTx48KCvS/Gqtm3baty4cc7nn3zyiUwmkz755BOPrrNlyxbNmTNHp06dKvM1PkOBpYGvCwBiY2O1detWtWvXztelwANLly71dQluqS91wjuSkpK0detWJSYmevS6LVu2KD09XePGjVPTpk1dvsZnKLAQfOBzZrNZPXr08HUZlTpz5owiIiLcPv/XX3+VxWKRyWSqxarOKy4u1rlz52Q2m2v9vUry9BeLr9SXOoONp3+n3BUZGen1nyd8hgILXV3wufK6uubMmSOTyaRvv/1Wv//972W1WhUTE6PbbrtNubm5Lq83DENLly5Vly5dFB4ermbNmmnkyJH68ccfXc7btGmThg4dqgsuuEAWi0UXXXSRJk6cqBMnTric53jvXbt2aeTIkWrWrFmlrVGOLoQPPvhAt912m1q0aKGIiAgVFhZKktatW6fk5GQ1atRIjRs31qBBg7R79+4y13n22Wd1ySWXyGw2KzExUa+88orGjRuntm3blrlXixYt0iOPPKKEhASZzWZt3rxZkrRjxw7dcMMNioqKksViUdeuXbV+/XqX9zlz5oymT5+uhIQEWSwWRUVF6corr9TatWud5/z4448aPXq04uLiZDabFRMTo2uuuUZ79uxxnlNe839OTo7uvPNOtWrVSg0bNtSFF16o2bNnO++Fg8lk0uTJk/XSSy+pffv2ioiIUOfOnfX2229XeJ+rq3Sdjnv4l7/8RY899pgSEhLUuHFjJScna9u2bVVez537t2PHDo0ePVpt27ZVeHi42rZtq9///vc6dOiQy7Ucn52PP/5YEyZMUPPmzRUZGamxY8cqPz9f2dnZ+t3vfqemTZsqNjZW06dP19mzZ8t8L4sWLdK8efPUunVrWSwWXXnllfroo4/cuj8ffvihrrnmGkVGRioiIkK9evVy67WOLqU1a9Zo2rRpstlsCg8PV+/evct8vseNG6fGjRvrm2++0cCBA9WkSRNdc801kqSioiI98sgjuuyyy2Q2m9WiRQvdeuutOn78uMs1zp49qxkzZshmsykiIkK/+c1vlJGRUWFdpbu6vvzyS6WkpKh58+ayWCxq166dpk6dKun83/l7771XkpSQkCCTyeRyjfryWYd7aPGBXxsxYoRuuukm/fGPf9Q333yjWbNmSZJeeOEF5zkTJ07UqlWrNGXKFC1cuFA5OTmaO3euevbsqa+++koxMTGSpAMHDig5OVnjx4+X1WrVwYMH9dhjj+k3v/mNvvnmG4WFhbm89/DhwzV69Gjdcccdys/Pr7LW2267Tdddd51eeukl5efnKywsTPPnz9cDDzygW2+9VQ888ICKioq0ePFiXX311crIyHD+S/Kvf/2rJk6cqBEjRmjJkiXKzc1Venp6mR+iDk8++aQuueQS/eUvf1FkZKQuvvhibd68WYMHD1b37t21fPlyWa1Wvfrqq7rpppt05swZ5ziIadOm6aWXXtIjjzyirl27Kj8/X3v37tXJkyed17/22mtVXFysRYsWqXXr1jpx4oS2bNlS7vgHh4KCAvXt21cHDhxQenq6OnXqpM8//1wLFizQnj179M4777ic/84772j79u2aO3euGjdurEWLFunGG2/Ud999pwsvvLDK+11TzzzzjC677DI9/vjjkqQHH3xQ1157rTIzM2W1Wit8nTv37+DBg7r00ks1evRoRUVFKSsrS8uWLdNVV12lffv2KTo62uWa48eP1/Dhw/Xqq69q9+7duv/++3Xu3Dl99913Gj58uG6//XZ9+OGHWrhwoeLi4jRt2jSX1z/99NNq06aNHn/8cdntdi1atEhDhgzRp59+quTk5Aq/lzVr1mjs2LEaOnSoXnzxRYWFhWnFihUaNGiQ3n//fWc4qcz999+vpKQkPffcc8rNzdWcOXPUp08f7d692+X/Y1FRkW644QZNnDhRM2fO1Llz52S32zV06FB9/vnnmjFjhnr27KlDhw4pLS1Nffr00Y4dOxQeHi5JmjBhglavXq3p06drwIAB2rt3r4YPH67Tp09XWeP777+vlJQUtW/fXo899phat26tgwcP6oMPPnDe/5ycHD311FN64403FBsbK6nilp769llHKQZQi1auXGlIMrZv317hOZmZmYYkY+XKlc5jaWlphiRj0aJFLufeeeedhsViMex2u2EYhrF161ZDkvHoo4+6nHfkyBEjPDzcmDFjRrnvabfbjbNnzxqHDh0yJBlvvfVWmfd+6KGHPPoex44d63L88OHDRoMGDYz/+7//czl++vRpw2azGb/73e8MwzCM4uJiw2azGd27d3c579ChQ0ZYWJjRpk0b5zHHvWrXrp1RVFTkcv5ll11mdO3a1Th79qzL8euvv96IjY01iouLDcMwjA4dOhjDhg2r8Ps5ceKEIcl4/PHHK/2+e/fubfTu3dv5fPny5YYkY/369S7nLVy40JBkfPDBB85jkoyYmBgjLy/PeSw7O9sICQkxFixYUOn7eqp0nY572LFjR+PcuXPO4xkZGYYkY+3atZVer6r7V55z584Zv/zyi9GoUSPjiSeecB53fHZKf0aGDRtmSDIee+wxl+NdunQxkpKSynwvcXFxxq+//uo8npeXZ0RFRRn9+/cv816ZmZmGYRhGfn6+ERUVZaSkpLi8R3FxsdG5c2ejW7dulX5PmzdvNiQZSUlJzr+PhmEYBw8eNMLCwozx48c7j6WmphqSjBdeeMHlGmvXrjUkGa+//rrL8e3btxuSjKVLlxqGYRj79+83JBl33323y3kvv/yyIclITU0tU9fmzZudx9q1a2e0a9fO5R6VtnjxYpf7U1J9+azDPXR1wa/dcMMNLs87deqkgoICHTt2TJL09ttvy2QyacyYMTp37pzzYbPZ1LlzZ5fm7mPHjumOO+5QfHy8GjRooLCwMLVp00aStH///jLvPWLECI9qLX3++++/r3Pnzmns2LEutVksFvXu3dtZ23fffefs0iipdevW6tWrV4X3pWQL1Q8//KB//vOfuuWWWyTJ5f2uvfZaZWVl6bvvvpMkdevWTe+9955mzpypTz75RL/++qvLtaOiotSuXTstXrxYjz32mHbv3i273V7l9//xxx+rUaNGGjlypMtxR0tT6e6Tvn37qkmTJs7nMTExatmyZZnuoNIcY5ocD3dqK891112n0NBQ5/NOnTpJUpXvX9X9k6RffvlF9913ny666CI1aNBADRo0UOPGjZWfn1/uZ+366693ed6+fXtnjaWPl1ff8OHDZbFYnM+bNGmilJQUffbZZyouLi73+9iyZYtycnKUmppa5n4OHjxY27dvd6ul8+abb3YZy9amTRv17NnT2f1aUum/I2+//baaNm2qlJQUlxq6dOkim83m/DviuJbj8+3wu9/9Tg0aVN5x8a9//UsHDhzQH//4R5d7VBN19VlH7SD4wK81b97c5bljAK/jl81PP/0kwzAUExOjsLAwl8e2bduc43fsdrsGDhyoN954QzNmzNBHH32kjIwM55iO8n55OZq73VX6/J9++kmSdNVVV5Wpbd26dc7aHF0kji65kso7Vtl7TZ8+vcx73XnnnZLkfL8nn3xS9913n95880317dtXUVFRGjZsmL7//ntJ58ckfPTRRxo0aJAWLVqkpKQktWjRQlOmTKm0W+HkyZOy2WxlBnS3bNlSDRo0cOkKksr+v5XO//8t7/9FSe3atXP5/ubOnVvp+RWp6rNVkarun3Q+DDz99NMaP3683n//fWVkZGj79u1q0aJFudePiopyed6wYcMKjxcUFJR5vc1mK/dYUVGRfvnll3K/D8dnZuTIkWU+MwsXLpRhGMrJyan0XlT23qX/f0dERCgyMrJMDadOnVLDhg3L1JCdnV3m70jp92rQoEG5n6OSHGOFLrjggiq/F3fV1WcdtYMxPqjXoqOjZTKZ9Pnnn5c7q8lxbO/evfrqq6+0atUqpaamOr/+ww8/VHhtT2dklT7fMY7j//2//+dsWSqP44ei4xdRSdnZ2R6916xZszR8+PByX3PppZdKkho1aqT09HSlp6frp59+crZepKSk6J///Kek8/9qf/755yWd/xfz+vXrNWfOHBUVFWn58uUVfh9ffvmlDMNwqe/YsWM6d+5cmXEt1bVhwwaXsU9xcXFeua67qrp/ubm5evvtt5WWlqaZM2c6X1dYWOhWkKiO8j4n2dnZatiwoRo3blzuaxz/P5566qkKZ0FVFLzdee/Sv+zL+/sUHR2t5s2ba+PGjeVe29FK4rhWdna2WrVq5fz6uXPnyoSM0lq0aCFJ+ve//13peZ6oq886agfBB/Xa9ddfrz//+c86evRoma6ikhw/nEqHoxUrVtRabYMGDVKDBg104MCBSrvNLr30UtlsNq1fv95l0Orhw4e1ZcsWt36xX3rppbr44ov11Vdfaf78+W7XGBMTo3Hjxumrr77S448/Xu4U40suuUQPPPCAXn/9de3atavCa11zzTVav3693nzzTd14443O46tXr3Z+3Rs6duzolet4Q3n3z2QyyTCMMp+15557rsJup5p64403tHjxYmdXzunTp7VhwwZdffXVLt15JfXq1UtNmzbVvn37NHny5Gq/99q1azVt2jTn37FDhw5py5YtGjt2bJWvvf766/Xqq6+quLhY3bt3r/A8x4yql19+WVdccYXz+Pr163Xu3LlK3+OSSy5Ru3bt9MILL2jatGkVLvvgboufVHefddQOgg/qxMcff1zuirHXXnttja7bq1cv3X777br11lu1Y8cO/fa3v1WjRo2UlZWlL774Qh07dtSkSZN02WWXqV27dpo5c6YMw1BUVJQ2bNigTZs21ej9K9O2bVvNnTtXs2fP1o8//qjBgwerWbNm+umnn5SRkeFsOQgJCVF6eromTpyokSNH6rbbbtOpU6eUnp6u2NhYhYS41yO9YsUKDRkyRIMGDdK4cePUqlUr5eTkaP/+/dq1a5dee+01SVL37t11/fXXq1OnTmrWrJn279+vl156ScnJyYqIiNDXX3+tyZMna9SoUbr44ovVsGFDffzxx/r6669dWjBKGzt2rJ555hmlpqbq4MGD6tixo7744gvNnz9f1157rfr37++V++prVd0/Sfrtb3+rxYsXKzo6Wm3bttWnn36q559/vszCeN4SGhqqAQMGaNq0abLb7Vq4cKHy8vKUnp5e4WsaN26sp556SqmpqcrJydHIkSPVsmVLHT9+XF999ZWOHz+uZcuWVfnex44d04033qgJEyYoNzdXaWlpslgszhmYlRk9erRefvllXXvttbrrrrvUrVs3hYWF6d///rc2b96soUOH6sYbb1T79u01ZswYPf744woLC1P//v21d+9e56zGqjzzzDNKSUlRjx49dPfdd6t169Y6fPiw3n//fb388suS/heon3jiCaWmpiosLEyXXnqpy9gch2D5rAcqgg/qxH333Vfu8czMzBpfe8WKFerRo4dWrFihpUuXym63Ky4uTr169VK3bt0kSWFhYdqwYYPuuusuTZw4UQ0aNFD//v314YcfqnXr1jWuoSKzZs1SYmKinnjiCa1du1aFhYWy2Wy66qqrdMcddzjPu/32253rsdx4441q27atZs6cqbfeekuHDx9267369u2rjIwMzZs3T1OnTtXPP/+s5s2bKzEx0aU1rF+/fvr73/+uJUuW6MyZM2rVqpXGjh2r2bNnSzo/jqJdu3ZaunSpjhw5IpPJpAsvvFCPPvqo/u///q/C97dYLNq8ebNmz56txYsX6/jx42rVqpWmT5+utLS0at5B/1PV/ZOkV155RXfddZdmzJihc+fOqVevXtq0aVOZwcreMnnyZBUUFGjKlCk6duyYLr/8cr3zzjsVDo53GDNmjFq3bq1FixZp4sSJOn36tFq2bKkuXbq4bANRmfnz52v79u269dZblZeXp27duunVV191ayX20NBQ/f3vf9cTTzyhl156SQsWLFCDBg10wQUXqHfv3i6te88//7xiYmK0atUqPfnkk+rSpYtef/11jR49usr3GTRokD777DPNnTtXU6ZMUUFBgS644AKXyRN9+vTRrFmz9OKLL+rZZ5+V3W7X5s2by92qIlg+64HKZBiG4esiAJR16tQpXXLJJRo2bJj++te/+roc+KGDBw8qISFBixcv1vTp0+v0vT/55BP17dtXr732WpnZTYA/o8UH8APZ2dmaN2+e+vbtq+bNm+vQoUNasmSJTp8+rbvuusvX5QFAwCD4AH7AbDbr4MGDuvPOO5WTk6OIiAj16NFDy5cv1+WXX+7r8gAgYNDVBQAAggYLGAIAgKBB8AEAAEGD4AMAAIIGg5tLsdvt+s9//qMmTZp4vGUBAADwDcMwdPr0acXFxVW68CvBp5T//Oc/io+P93UZAACgGo4cOVLpprQEn1Icy5MfOXLEraXQAQCA7+Xl5Sk+Pr7cbUZKIviU4ujeioyMJPgAAFDPVDVMhcHNAAAgaBB8AABA0CD4AACAoEHwAQAAQYPgAwAAggbBBwAABA2CDwAACBoEHwAAEDQIPgAAIGiwcjMAAKg1xXZDGZk5Ona6QC2bWNQtIUqhIb7bBJzgAwAAasXGvVlK37BPWbkFzmOxVovSUhI1uEOsT2qiqwsAAHjdxr1ZmrRml0vokaTs3AJNWrNLG/dm+aQugg8AAPCqYruh9A37ZJTzNeO/j/QN+1RsL++M2kXwAQAAXpWRmVOmpae0rNwCPf3x93VU0f8QfAAAgFcdO1156HFY8uH3dd7lRfABAABe1bKJxe1z67rLi+ADAAC8qltClGKt7oWfrNwCZWTm1HJF/0PwAQAAXhUaYlJaSqLb57vbNeYNBB8AAOB1gzvE6u7+l7h1riddYzVVr4LPZ599ppSUFMXFxclkMunNN990+fq4ceNkMplcHj169PBNsQAABLnJ/S6SLdJc4ddNOr+gYbeEqDqrqV4Fn/z8fHXu3FlPP/10hecMHjxYWVlZzse7775bhxUCAACH0BCT5txwuUw6H3JKcjxPS0ms0y0s6tWWFUOGDNGQIUMqPcdsNstms9VRRQAAoDKDO8Rq2ZikMltX2Hy0dUW9Cj7u+OSTT9SyZUs1bdpUvXv31rx589SyZUtflwUAQNAa3CFWAxJtfrFZaUAFnyFDhmjUqFFq06aNMjMz9eCDD6pfv37auXOnzOby+xgLCwtVWFjofJ6Xl1dX5QIAEDRCQ0xKbtfc12UEVvC56aabnH/u0KGDrrzySrVp00bvvPOOhg8fXu5rFixYoPT09LoqEQAA+FC9GtzsqdjYWLVp00bff1/xXiCzZs1Sbm6u83HkyJE6rBAAANSlgGrxKe3kyZM6cuSIYmMrHjhlNpsr7AYDAACBpV4Fn19++UU//PCD83lmZqb27NmjqKgoRUVFac6cORoxYoRiY2N18OBB3X///YqOjtaNN97ow6oBAIC/qFfBZ8eOHerbt6/z+bRp0yRJqampWrZsmb755hutXr1ap06dUmxsrPr27at169apSZMmvioZAAD4EZNhGHW3JWo9kJeXJ6vVqtzcXEVGRvq6HAAA4AZ3f38H9OBmAACAkgg+AAAgaBB8AABA0CD4AACAoEHwAQAAQYPgAwAAggbBBwAABA2CDwAACBr1auVmAABQtWK7oYzMHB07XaCWTSzqlhCl0BCTr8vyCwQfAAACyMa9WUrfsE9ZuQXOY7FWi9JSEjW4Q8WbdgcLuroAAAgQG/dmadKaXS6hR5Kycws0ac0ubdyb5aPK/AfBBwCAAFBsN5S+YZ/K24DTcSx9wz4V24N7i06CDwAAASAjM6dMS09JhqSs3AJlZObUXVF+iOADAEAAOHa64tBTnfMCFcEHAIAA0LKJxavnBSqCDwAAAaBbQpRirRZVNGndpPOzu7olRNVlWX6H4AMAgJ8qthvaeuCk3tpzVFsPnKx0YHJoiElpKYmSVCb8OJ6npSQG/Xo+rOMDAIAfqs56PIM7xGrZmKQyr7Oxjo+TyTCM4J7XVkpeXp6sVqtyc3MVGRnp63IAAEHIsR5P6V/QjraaZWOSKg0xwbhys7u/v2nxAQDAj1S1Ho9J59fjGZBoqzDMhIaYlNyueW2WWW8xxgcAAD/Cejy1i+ADAIAfYT2e2kXwAQDAj7AeT+0i+AAA4EdYj6d2EXwAAPAjrMdTuwg+AAD4Gcd6PDara3eWzWqpcio7Ksd0dgAA/NDgDrEakGgLuvV4ahvBBwAAP8V6PN5HVxcAAAgaBB8AABA0CD4AACBoEHwAAEDQIPgAAICgwawuAABqqNhuMO28niD4AABQAxv3Zil9wz6XHdVjrRalpSSy0KAfoqsLAIBq2rg3S5PW7HIJPZKUnVugSWt2aePeLB9VhooQfAAAqIZiu6H0DftklPM1x7H0DftUbC/vDPgKwQcAAA8V2w2t+kdmmZaekgxJWbkFysjMqbvCUCXG+AAA4IHyxvRU5thp985D3SD4AADgJseYHk86r1o2sVR9EuoMwQcAADdUNqanPCZJNuv5qe3wH4zxAQDADRmZOW53bzlW8ElLSWQ9Hz9Diw8AAG7wZKyOjXV8/BbBBwAAN7g7VufB69prXK8EWnr8VL3q6vrss8+UkpKiuLg4mUwmvfnmmy5fNwxDc+bMUVxcnMLDw9WnTx99++23vikWABBQuiVEKdZqUUVxxqTzKzYTevxbvQo++fn56ty5s55++ulyv75o0SI99thjevrpp7V9+3bZbDYNGDBAp0+fruNKAQCBJjTEpLSUREkqE34Y01N/mAzDqJdLSppMJv3tb3/TsGHDJJ1v7YmLi9PUqVN13333SZIKCwsVExOjhQsXauLEiW5dNy8vT1arVbm5uYqMjKyt8gEA9RR7c/knd39/B8wYn8zMTGVnZ2vgwIHOY2azWb1799aWLVsqDD6FhYUqLCx0Ps/Ly6v1WgEA9dfgDrEakGhjN/Z6KmCCT3Z2tiQpJibG5XhMTIwOHTpU4esWLFig9PT0Wq0NABBYQkNMSm7X3NdloBrq1Rgfd5hMronbMIwyx0qaNWuWcnNznY8jR47UdokAAMBHAqbFx2azSTrf8hMb+78+1mPHjpVpBSrJbDbLbDbXen0AAMD3AqbFJyEhQTabTZs2bXIeKyoq0qeffqqePXv6sDIAAOAv6lWLzy+//KIffvjB+TwzM1N79uxRVFSUWrduralTp2r+/Pm6+OKLdfHFF2v+/PmKiIjQzTff7MOqAQCAv6hXwWfHjh3q27ev8/m0adMkSampqVq1apVmzJihX3/9VXfeead+/vlnde/eXR988IGaNGniq5IBADVUbDeYQQWvqbfr+NQW1vEBAP/Bmjlwl7u/vwNmjA8AILBs3JulSWt2ldkRPTu3QJPW7NLGvVk+qgz1GcEHAOB3iu2G0jfsU3ldEo5j6Rv2qdhOpwU8Q/ABAPidjMycMi09JRmSsnILlJGZU3dFISAQfAAAfufY6YpDT3XOAxwIPgAAv9OyicWr5wEOBB8AgN/plhClWKtFlU1aDzFJP+cX1VlNCAwEHwCA3wkNMSktJbHSc+yG9KdXmN0FzxB8AAB+aXCHWD1zc1dVtVYhs7vgCYIPAMBvNWtkVmWZhtld8BTBBwDgt5jdBW8j+AAA/Bazu+BtBB8AgN+qanaXSef37uqWEFWXZaEeI/gAAPxWydldpcOP43laSiK7tcNtBB8AgF8b3CFWy8YkyWZ17c6yWS1aNiaJXdrhkQa+LgAAgKoM7hCrAYk2ZWTm6NjpArVscr57i5YeeIrgAwCoF0JDTEpu19zXZaCeo6sLAAAEDYIPAAAIGgQfAAAQNAg+AAAgaBB8AABA0CD4AACAoEHwAQAAQYPgAwAAggYLGAIAvKLYbrCyMvwewQcAUGMb92YpfcM+ZeUWOI/FWi1KS0lkLy34Fbq6AAA1snFvliat2eUSeiQpO7dAk9bs0sa9WT6qDCiL4AMAqLZiu6H0DftklPM1x7H0DftUbC/vDKDuEXwAANWWkZlTpqWnJENSVm6BMjJz6q4ooBKM8QEAVNux0xWHnpKyc3/V1gMnGfgMnyP4AACqrWUTi1vnPfzOfuXkFzmfM/AZvkJXFwCg2rolRCnWalFVbTclQ4/EwGf4DsEHAFBtoSEmpaUkSlKV4ackBj7DVwg+AIAaGdwhVsvGJMlmde32amIJrfR1DHyGLzDGBwDgojorMA/uECu7XXrgrb3Obq3TBcVuvZ+7A6QBbyD4AACcqrsC88a9WfrTK7vKXc+nKu4OkAa8ga4uAICk6q/AXNkihpUx6Xyo6pYQVb2CgWog+AAAarQCc1WLGJbH0XGWlpLIej6oUwQfAAgSxXZDWw+c1Ft7jmrrgZMuIaYmKzBXZ4yOzWrRsjFJrOODOscYHwAIAlWN3XE3vJR3nrtjdB68rr2im5hZuRk+RfABgADnGLtTupPKMXZn2Zgkt8NLeec5FjHMzi0ot6vMpPMtPON6JRB24HN0dQFAAHN37M4VbZpVugJzZQORK1vEkLE88DcEHwAIYO6O3dl56OcahZeKFjFkLA/8TUB1dc2ZM0fp6ekux2JiYpSdne2jigDAtzwZuzO0SystG5NUZiyQzc0NRQd3iNWARJvHix8CdSmggo8kXX755frwww+dz0NDK18yHQACmadjd2oaXkJDTEpu17za9QK1LeCCT4MGDWSz2XxdBgD4BXcHHpccu0N4QSALuDE+33//veLi4pSQkKDRo0frxx9/rPT8wsJC5eXluTwAIFAw8BhwFVDBp3v37lq9erXef/99Pfvss8rOzlbPnj118uTJCl+zYMECWa1W5yM+Pr4OKwaA2sfAY+B/TIZhVGdPuXohPz9f7dq104wZMzRt2rRyzyksLFRhYaHzeV5enuLj45Wbm6vIyMi6KhUAao1jt/Xs3F+Vk1+kqMZm2SIZeIzAkpeXJ6vVWuXv74Ab41NSo0aN1LFjR33//fcVnmM2m2U2m+uwKgCoO5Wt2EzoQTAKqK6u0goLC7V//37FxtKMCyD4VHe3dSCQBVTwmT59uj799FNlZmbqyy+/1MiRI5WXl6fU1FRflwYAXlHZRqOlz6vubutAIAuorq5///vf+v3vf68TJ06oRYsW6tGjh7Zt26Y2bdr4ujQAqLGqNhotyZPd1pm6jmASUMHn1Vdf9XUJAFAr3NlotGT4qclu60AgC6iuLgAIRNXptqrJbutAICP4AICf86TbysGxYnN1dlsHAhnBBwD8XHW6rVixGSgfwQcA/Jy73VEHT+S7PGfFZqCsgBrcDACBqKqNRh2WfPi9LrU1cQk0Nd1tHQg0Hrf4zJkzR4cOHaqNWgAA5SjZbVUZk8pfm8ex2/rQLq2U3K45oQdBzePgs2HDBrVr107XXHONXnnlFRUUMBUSAGrb4A6xmtr/kkrPKW+QMwBXHgefnTt3ateuXerUqZPuvvtuxcbGatKkSdq+fXtt1AcA+K+20RFuncfaPEDFqjW4uVOnTlqyZImOHj2qF154QUePHlWvXr3UsWNHPfHEE8rNzfV2nQAQ9FibB6i5Gs3qstvtKioqUmFhoQzDUFRUlJYtW6b4+HitW7fOWzUCQFCoah8u1uYBaq5as7p27typlStXau3atTKbzRo7dqyeeeYZXXTRRZKkRx99VFOmTNFNN93k1WIBIFC5sw+XY5DzpDW7ZJJcZnixNg/gHpNhGB5tzdupUyft379fAwcO1IQJE5SSkqLQ0FCXc44fP66YmBjZ7XavFlsX8vLyZLValZubq8jISF+XA6CeKrYbbk8hr2gfLsfZpdfc8WSzUiBYuPv72+MWn1GjRum2225Tq1atKjynRYsW9TL0AIA3lBdMmoaH6dZeCZrc7yKXAFTVPlyOKeoDEm3O17E2D1B9Hrf4BDpafADUREWtNw5NI8L05+EdnS0zWw+c1O+f3VbldddO6KHkds29WCkQWNz9/c2WFQDgJZW13jicOnNWd6zZpY17syRVbx8uANVH8AEAL6lqF/WSHCssM0UdqFsEHwDwEk9aZRwrLDNFHahbBB8A8BJPW2WOnS5w2YerdPhhijrgfW7N6vr666/dvmCnTp2qXQwA+DvHNPXsvALl/FKoqEYNZbOG64o2zWQ3DDUND9OpX8+6dS1HUBrcIVbLxiSVmQlmY4o64HVuBZ8uXbrIZDLJMAyZTJX/q6O4uNgrhQGAvylvmrpDiEmyuzlH1qTzoaZk9xVT1IG64VbwyczMdP559+7dmj59uu69914lJydLkrZu3apHH31UixYtqp0qAcDHqpqm7knokcrvvgoNMTFlHahlbgWfNm3aOP88atQoPfnkk7r22mudxzp16qT4+Hg9+OCDGjZsmNeLBABfcmeaekVKby1B9xXgWx6v3PzNN98oISGhzPGEhATt27fPK0UBgD/xZJp6aYakB69rr+gmZrqvAD/g8ayu9u3b65FHHlFBwf9+CBQWFuqRRx5R+/btvVocAPiDmi4eGN3ErKFdWim5XXNCD+BjHrf4LF++XCkpKYqPj1fnzp0lSV999ZVMJpPefvttrxcIAL5W08UDWXwQ8B8eB59u3bopMzNTa9as0T//+U8ZhqGbbrpJN998sxo1alQbNQKATzkWGczOLfBonE95s7cA+JbHwUeSIiIidPvtt3u7FgDwO451e4Z0sOmFfxx0+3UsPgj4p2qt3PzSSy/pN7/5jeLi4nTo0CFJ0pIlS/TWW295tTgA8KWNe7P0m4Uf6/fPbnOGnooyTOnjNqtFy8YkMXsL8DMet/gsW7ZMDz30kKZOnapHHnnEuWBhs2bN9Pjjj2vo0KFeLxIA6lpF6/Y41uu5tWdbXdAs3GXl5p2HfmbxQcDPmQzD8GhpisTERM2fP1/Dhg1TkyZN9NVXX+nCCy/U3r171adPH504caK2aq0TeXl5slqtys3NVWRkpK/LAeADxXZDv1n4cYVT2B1jd764rx/hBvAT7v7+9rirKzMzU127di1z3Gw2Kz8/39PLAYBPFdsNbT1wUm/tOaqtB046x/RUtm6Pof/trg6gfvG4qyshIUF79uxxWc1Zkt577z0lJiZ6rTAAqG3l7b0Va7Xo2g42t15f0/V9ANQ9j4PPvffeqz/96U8qKCiQYRjKyMjQ2rVrtWDBAj333HO1USMAeIWjNefY6QIdPJGvJR9+X+ac7NwCPe/m7C3W5wHqH4+Dz6233qpz585pxowZOnPmjG6++Wa1atVKTzzxhEaPHl0bNQJAjb379X/0wFt7lZN/ttLzHIMeQ0ySYajcdXtYnweovzwe3FzSiRMnZLfb1bJlS2/W5FMMbgYCz4J392nFZ5nVem3pTUYdQ5mZqg74l1ob3NyvXz+dOnVKkhQdHe0MPXl5eerXr1/1qgWAWvLu11nVDj0RDUNljQhzOcb6PED95nFX1yeffKKioqIyxwsKCvT55597pSgA8IZiu6EH3tpb7defKSrWr0XFurv/JWobHcH6PEAAcDv4fP31184/79u3T9nZ2c7nxcXF2rhxo1q1auXd6gCgBjIyc5STX/Yfap56dfth1uwBAoTbwadLly4ymUwymUzldmmFh4frqaee8mpxAFAT3phuXnLNnuR2zWteFACfcjv4ZGZmyjAMXXjhhcrIyFCLFi2cX2vYsKFatmyp0NDQWikSANxVcsr6idOFXrsua/YAgcHt4ONYsNBut9daMQBQE+UtSBhi+t/+WjXBmj1AYPB4VteCBQv0wgsvlDn+wgsvaOHChV4pCgA85dhUtPRWE1WFnglXt1Ws1aKKRu+YdH41Z9bsAQKDx8FnxYoVuuyyy8ocv/zyy7V8+XKvFAUAnii2G0rfsK/cxQYdSo9Lbt6ooZbenKTZ112utJTz2+2UDj+O52kpiQxsBgKEx8EnOztbsbFl169o0aKFsrKyvFJUTS1dulQJCQmyWCy64oormGYPBCjHBqNLNv2r0k1FpfMtPw9e115PjO6itRN6KGN2f13b6fzPssEdYrVsTJJsVtfuLNbsAQKPx+v4xMfH6x//+IcSEhJcjv/jH/9QXFyc1wqrrnXr1mnq1KlaunSpevXqpRUrVmjIkCHat2+fWrdu7evyAHhJeeN5qvLzmSKN65VQbuvN4A6xGpBocw6MZs0eIDB5vGXFwoULtXjxYi1evNg5rf2jjz7SjBkzdM8992jWrFm1Uqi7unfvrqSkJC1btsx5rH379ho2bJgWLFhQ5evZsgLwf47xPNUZsxxrtSgtJZFWHCDAuPv72+MWnxkzZignJ0d33nmncwVni8Wi++67z+ehp6ioSDt37tTMmTNdjg8cOFBbtmwp9zWFhYUqLPzflNe8vLxarRFAzbgznqcy2bkFmrRmF11YQJDyeIyPyWTSwoULdfz4cW3btk1fffWVcnJy9NBDD9VGfR45ceKEiouLFRMT43I8JibGZaXpkhYsWCCr1ep8xMfH10WpAKopIzPHo+6t0hyBKX3DPhV7Y547gHrF4+Dj0LhxY1111VXq0KGDzGazN2uqMZPJtU/eMIwyxxxmzZql3Nxc5+PIkSN1USKAKjgGLr+156i2HjjpDCneXo0ZQHBxq6tr+PDhWrVqlSIjIzV8+PBKz33jjTe8Ulh1REdHKzQ0tEzrzrFjx8q0AjmYzWa/C25AsCtv4LJjbI43FxJkNWYg+LjV4mO1Wp0tJiW7hcp7+FLDhg11xRVXaNOmTS7HN23apJ49e/qoKgCeqGghwuzcAt2xZpc++DZLUY0aVrrgYFSjMLfei9WYgeDj8awuf7du3Tr94Q9/0PLly5WcnKy//vWvevbZZ/Xtt986t92oDLO6AN8pthv6zcKPqz2GxxGGnrm5qx5+Z7+ycwvKHQRt0vk1ethxHQgctTary9/ddNNNOnnypObOnausrCx16NBB7777rluhB4Bv1XTgsq3EVPWQEJMmrdklk+QSfliNGQhubrX4dO3atcLBwaXt2rWrxkX5Ei0+gO+8teeo7np1j0eviWoUpgevv1y2yLILDlY2Voip7EBg8WqLz7Bhw5x/Ligo0NKlS5WYmKjk5GRJ0rZt2/Ttt9/qzjvvrFnVAIJadcbc5OSflS3SouR2zct8jdWYAZTmVvBJS0tz/nn8+PGaMmWKHn744TLnMBUcQE10S4hSrNVS4dicilQ2Oys0xFRuKAIQnDxex+e1117T2LFjyxwfM2aMXn/9da8UBSA4hYaYlJaS6PGqzMzOAuAuj4NPeHi4vvjiizLHv/jiC1ks/PABUDODO8Tqtl5t3T4/1nq++woA3OHxrK6pU6dq0qRJ2rlzp3r06CHp/BifF154wS+2rQDg/4rtRqXjbgYk2vTCPw66dS1mZwHwhMfBZ+bMmbrwwgv1xBNP6JVXXpF0fvfzVatW6Xe/+53XCwQQWNyZaeXOWJ8Qk/T077syOwuARwJuAcOaYjo7UHscqzKX/qHjaK8puWO641xJ5YafpTcn6dpOhB4A57n7+7tam5SeOnVKzz33nO6//37l5Jzf5G/Xrl06evRo9aoFEPCK7YbSN+wrN8SUt2P64A6xWjYmSTar69jBWKtFy8cQegBUj8ddXV9//bX69+8vq9WqgwcPavz48YqKitLf/vY3HTp0SKtXr66NOgHUc1Wtylxyx3TH9HPW4QHgbR63+EybNk3jxo3T999/7zKLa8iQIfrss8+8WhyAwLFpX7Zb55Vek8exDs/QLq2U3K45oQdAjXjc4rN9+3atWLGizPFWrVopO9u9H2wAAkNVs7NKnvfmnv+4dU3W5AFQmzwOPhaLRXl5eWWOf/fdd2rRooVXigLg/yqbnVW6e8puGMrJL6rymlGNwliTB0Ct8jj4DB06VHPnztX69eslSSaTSYcPH9bMmTM1YsQIrxcIwP9UNDsrO7dAd6zZpaYRYTp15qzzeNPwMLeue2OXVnRlAahVHo/x+ctf/qLjx4+rZcuW+vXXX9W7d29ddNFFatKkiebNm1cbNQLwI+7MzioZeiTp1K9ny55cjv6JtpoVBwBV8LjFJzIyUl988YU+/vhj7dq1S3a7XUlJSerfv39t1AfAz1Q1O6u62HoCQF3wKPicO3dOFotFe/bsUb9+/dSvX7/aqguAn6psJ/SaePA6tp4AUPs86upq0KCB2rRpo+Li4tqqB4Cfq61ZV80aNayV6wJASR6P8XnggQc0a9Ys54rNAIKLYx8tb7fN1FZLEgCU5PEYnyeffFI//PCD4uLi1KZNGzVq1Mjl67t27fJacQD8T2iISWkpiZq0ZpdMKn8frepg/R4AdaFa09lNJvrhgWDm2Eer9Do+zSLC9POZsx4FIpMkGwObAdQRdmcvhd3ZAfeVt3Lzpn3Zbgei8nZlB4DqcPf3t9vB58yZM7r33nv15ptv6uzZs+rfv7+efPJJRUdHe61of0DwAWrO3UDkWOmZ0AOgprwefO69914tXbpUt9xyiywWi9auXas+ffrotdde81rR/oDgg2Dj7n5b9e29AAQXd39/uz3G54033tDzzz+v0aNHS5LGjBmjXr16qbi4WKGhoTWvGIDXVRU0KttvqzZaYRw7rQOAr7jd4tOwYUNlZmaqVatWzmPh4eH617/+pfj4+ForsK7R4oNAUVWoqWi/LcbdAKiP3P397fY6PsXFxWrY0HWBsQYNGujcuXPVrxJArXCEmtJbS2TnFmjSml169+usKvfbSt+wT8V25j4ACCxud3UZhqFx48bJbDY7jxUUFOiOO+5wWcvnjTfe8G6FADxS1SaiJkkPvrVXJ/OLKryGISkrt0AZmTl0TQEIKG4Hn9TU1DLHxowZ49ViANRcVZuIGlKloackVlMGEGjcDj4rV66szToAeIk3w8rBE2e8di0A8Ace79UFwL+5u/VDs4iwKs95dfthxvkACCgEHyDAODYRrUpPN8buOMb5AECgIPgAASY0xKQHr2tf5Xn/OHDSresxzgdAICH4AAGoWSNzleecOnPWrWuxazqAQELwAQKQu600TcPDVNGGESadX/CQXdMBBBKCDxCA3G2lubVXW0kqE34cz9NSEtlLC0BAIfgA9Vix3dDWAyf11p6j2nrgpHMGlmOAc1WtOZP7XaxlY5JkKzUY2ma1sGUFgIDk9jo+APxLVXtxpaUkatKaXTJJLqs4l27NGdwhVgMSbeyaDiAouL1JabBgk1LUB+5uMFrXu68DgK+4+/ubFh+gnnFnL670Dfs0INFGaw4AlELwAeoZd/biKrnBaGiIiY1GAeC/GNwM1DPuTlVn4UEAKIvgA9Qz7k5VZ+FBACiL4APUM+5OVWfhQQAoK6CCT9u2bWUymVweM2fO9HVZgFeFhpiUlpIoiYUHAcBTATe4ee7cuZowYYLzeePGjX1YDVA7BneI1bIxSWWmqtuYqg4AlQq44NOkSRPZbDZflwHUOqaqA4DnAmoBw7Zt26qwsFBFRUWKj4/XqFGjdO+996phw4ZuX4MFDAEAqH+CcgHDu+66S0lJSWrWrJkyMjI0a9YsZWZm6rnnnqvwNYWFhSosLHQ+z8vLq4tSARXbDVprAKCO+X2Lz5w5c5Senl7pOdu3b9eVV15Z5vjrr7+ukSNH6sSJE2revPwF3Cq6Pi0+qE1sJQEA3uVui4/fB58TJ07oxIkTlZ7Ttm1bWSxl1yw5evSoLrjgAm3btk3du3cv97XltfjEx8cTfFBr3N1nqzRaiACgYgHT1RUdHa3o6OhqvXb37t2SpNjYiv8FbTabZTabq3V9wFOe7LNVMtTQQgQA3hEw6/hs3bpVS5Ys0Z49e5SZman169dr4sSJuuGGG9S6dWtflwdI8myfLQdHC1Hp12XnFmjSml3auDertsoFgIATMMHHbDZr3bp16tOnjxITE/XQQw9pwoQJWrt2ra9LA5w83WerqhYiQ9Lsv+1V0Tm712oEgEDm911d7kpKStK2bdt8XQZQKU/32aqqhUiSTuYXqceCDzX/xo50ewFAFQKmxQeoDzzdZ8vdFqKc/LN0ewGAGwg+QB3ydJ8tT3dYT9+wT8V2v56oCQA+RfAB6phjny2b1TXU2KyWMlPZq2ohKqm8gdEAAFcBM8YH8DeVrbvj7j5bjhaiSWt2uf2+7naPAUAwIvgAtcCddXdCQ0xKblf+iuIlOVqI7v/bXuXkF1V5vqfdYwAQTOjqArysNtbdGdwhVttmXaOoRmEVnlN6YDQAoCyCD+BFVa27I1V/AHLDBiGaf2NHmeTewGgAQFkEH8CLqrMysyc8GRgNACiLMT6AF3m6MnN1uDswGgBQFsEH8CJPV2auLncHRgMAXNHVBXiRpyszAwDqFsEH8CJPV2YGANQtgg/gZQxABgD/xRgfoBYwABkA/BPBB6glDEAGAP9DVxcAAAgatPgAJVS2sSgAoP4j+AD/5c7GogCA+o2uLkC1s7EoAMD/EHwQ9GpzY1EAgH8h+CDo1fbGogAA/0HwQdCri41FAQD+geCDoFdXG4sCAHyP4IOgx8aiABA8CD4IemwsCgDBg+ADiI1FASBYsIAh8F9sLAoAgY/gA5TAxqIAENjo6gIAAEGDFh/gv9igFAACH8EHEBuUAkCwoKsLQY8NSgEgeBB8ENTYoBQAggvBB0GNDUoBILgQfBDU2KAUAIILwQdBjQ1KASC4EHwQ1NigFACCC8EHQY0NSgEguBB8EPTYoBQAggcLGAJig1IACBYEH+C/2KAUAAIfXV0AACBoEHwAAEDQIPgAAICgUW+Cz7x589SzZ09FRESoadOm5Z5z+PBhpaSkqFGjRoqOjtaUKVNUVFRUt4UCAAC/VW8GNxcVFWnUqFFKTk7W888/X+brxcXFuu6669SiRQt98cUXOnnypFJTU2UYhp566ikfVAwAAPxNvQk+6enpkqRVq1aV+/UPPvhA+/bt05EjRxQXFydJevTRRzVu3DjNmzdPkZGRdVUqAADwU/Wmq6sqW7duVYcOHZyhR5IGDRqkwsJC7dy5s8LXFRYWKi8vz+UBAAACU8AEn+zsbMXExLgca9asmRo2bKjs7OwKX7dgwQJZrVbnIz4+vrZLBQAAPuLT4DNnzhyZTKZKHzt27HD7eiZT2VV2DcMo97jDrFmzlJub63wcOXKkWt8LAADwfz4d4zN58mSNHj260nPatm3r1rVsNpu+/PJLl2M///yzzp49W6YlqCSz2Syz2ezWewAAgPrNp8EnOjpa0dHRXrlWcnKy5s2bp6ysLMXGnt9U8oMPPpDZbNYVV1zhlfcAAAD1W72Z1XX48GHl5OTo8OHDKi4u1p49eyRJF110kRo3bqyBAwcqMTFRf/jDH7R48WLl5ORo+vTpmjBhAjO6AACApHoUfB566CG9+OKLzuddu3aVJG3evFl9+vRRaGio3nnnHd15553q1auXwsPDdfPNN+svf/mLr0oGAAB+xmQYhuHrIvxJXl6erFarcnNzaSkCAKCecPf3d8BMZwcAAKgKwQcAAAQNgg8AAAgaBB8AABA0CD4AACBoEHwAAEDQIPgAAICgQfABAABBg+ADAACCBsEHAAAEDYIPAAAIGgQfAAAQNAg+AAAgaBB8AABA0CD4AACAoEHwAQAAQYPgAwAAggbBBwAABA2CDwAACBoEHwAAEDQIPgAAIGgQfAAAQNAg+AAAgKBB8AEAAEGD4AMAAIIGwQcAAAQNgg8AAAgaBB8AABA0CD4AACBoEHwAAEDQIPgAAICgQfABAABBg+ADAACCBsEHAAAEDYIPAAAIGgQfAAAQNAg+AAAgaBB8AABA0CD4AACAoEHwAQAAQYPgAwAAggbBBwAABA2CDwAACBr1JvjMmzdPPXv2VEREhJo2bVruOSaTqcxj+fLldVtoOYrthrYeOKm39hzV1gMnVWw3fF0SAABBqYGvC3BXUVGRRo0apeTkZD3//PMVnrdy5UoNHjzY+dxqtdZFeRXauDdL6Rv2KSu3wHks1mpRWkqiBneI9WFlAAAEn3oTfNLT0yVJq1atqvS8pk2bymaz1UFFVdu4N0uT1uxS6fad7NwCTVqzS8vGJBF+AACoQ/Wmq8tdkydPVnR0tK666iotX75cdru90vMLCwuVl5fn8vCGYruh9A37yoQeSc5j6Rv20e0FAEAdCqjg8/DDD+u1117Thx9+qNGjR+uee+7R/PnzK33NggULZLVanY/4+Hiv1JKRmePSvVWaISkrt0AZmTleeT8AAFA1nwafOXPmlDsgueRjx44dbl/vgQceUHJysrp06aJ77rlHc+fO1eLFiyt9zaxZs5Sbm+t8HDlypKbfliTp2OmKQ091zgMAADXn0zE+kydP1ujRoys9p23bttW+fo8ePZSXl6effvpJMTEx5Z5jNptlNpur/R4VadnE4tXzAABAzfk0+ERHRys6OrrWrr97925ZLJYKp7/Xpm4JUYq1WpSdW1DuOB+TJJvVom4JUXVdGgAAQavezOo6fPiwcnJydPjwYRUXF2vPnj2SpIsuukiNGzfWhg0blJ2dreTkZIWHh2vz5s2aPXu2br/99lpp0alKaIhJaSmJmrRml0ySS/gx/fe/aSmJCg0xlfNqAABQG0yGYdSLaUXjxo3Tiy++WOb45s2b1adPH23cuFGzZs3SDz/8ILvdrgsvvFDjx4/Xn/70JzVo4H6+y8vLk9VqVW5uriIjI2tcN+v4AABQ+9z9/V1vgk9d8Xbwkc5Pbc/IzNGx0wVq2eR89xYtPQAAeI+7v7/rTVdXfRYaYlJyu+a+LgMAgKAXUOv4AAAAVIbgAwAAggbBBwAABA2CDwAACBoEHwAAEDQIPgAAIGgQfAAAQNAg+AAAgKBB8AEAAEGDlZtLcezgkZeX5+NKAACAuxy/t6vaiYvgU8rp06clSfHx8T6uBAAAeOr06dOyWq0Vfp1NSkux2+36z3/+oyZNmshk8u5Gonl5eYqPj9eRI0e8tgFqIOH+VI17VDXuUeW4P1XjHlXNH++RYRg6ffq04uLiFBJS8UgeWnxKCQkJ0QUXXFCr7xEZGek3HxR/xP2pGveoatyjynF/qsY9qpq/3aPKWnocGNwMAACCBsEHAAAEDYJPHTKbzUpLS5PZbPZ1KX6J+1M17lHVuEeV4/5UjXtUtfp8jxjcDAAAggYtPgAAIGgQfAAAQNAg+AAAgKBB8AEAAEGD4FNH5s2bp549eyoiIkJNmzYt9xyTyVTmsXz58rot1EfcuT+HDx9WSkqKGjVqpOjoaE2ZMkVFRUV1W6gfadu2bZnPy8yZM31dlk8tXbpUCQkJslgsuuKKK/T555/7uiS/MWfOnDKfF5vN5uuyfOqzzz5TSkqK4uLiZDKZ9Oabb7p83TAMzZkzR3FxcQoPD1efPn307bff+qZYH6jq/owbN67MZ6pHjx6+KdYDBJ86UlRUpFGjRmnSpEmVnrdy5UplZWU5H6mpqXVUoW9VdX+Ki4t13XXXKT8/X1988YVeffVVvf7667rnnnvquFL/MnfuXJfPywMPPODrknxm3bp1mjp1qmbPnq3du3fr6quv1pAhQ3T48GFfl+Y3Lr/8cpfPyzfffOPrknwqPz9fnTt31tNPP13u1xctWqTHHntMTz/9tLZv3y6bzaYBAwY493QMdFXdH0kaPHiwy2fq3XffrcMKq8lAnVq5cqVhtVrL/Zok429/+1ud1uNvKro/7777rhESEmIcPXrUeWzt2rWG2Ww2cnNz67BC/9GmTRtjyZIlvi7Db3Tr1s244447XI5ddtllxsyZM31UkX9JS0szOnfu7Osy/Fbpn792u92w2WzGn//8Z+exgoICw2q1GsuXL/dBhb5V3u+n1NRUY+jQoT6ppyZo8fEzkydPVnR0tK666iotX75cdrvd1yX5ha1bt6pDhw6Ki4tzHhs0aJAKCwu1c+dOH1bmWwsXLlTz5s3VpUsXzZs3L2i7/oqKirRz504NHDjQ5fjAgQO1ZcsWH1Xlf77//nvFxcUpISFBo0eP1o8//ujrkvxWZmamsrOzXT5TZrNZvXv35jNVwieffKKWLVvqkksu0YQJE3Ts2DFfl1QlNin1Iw8//LCuueYahYeH66OPPtI999yjEydOBHX3hUN2drZiYmJcjjVr1kwNGzZUdna2j6ryrbvuuktJSUlq1qyZMjIyNGvWLGVmZuq5557zdWl17sSJEyouLi7zGYmJiQnaz0dp3bt31+rVq3XJJZfop59+0iOPPKKePXvq22+/VfPmzX1dnt9xfG7K+0wdOnTIFyX5nSFDhmjUqFFq06aNMjMz9eCDD6pfv37auXOnX6/oTItPDZQ3WLD0Y8eOHW5f74EHHlBycrK6dOmie+65R3PnztXixYtr8TuoXd6+PyaTqcwxwzDKPV5feXLP7r77bvXu3VudOnXS+PHjtXz5cj3//PM6efKkj78L3yn9WQi0z0dNDBkyRCNGjFDHjh3Vv39/vfPOO5KkF1980ceV+Tc+UxW76aabdN1116lDhw5KSUnRe++9p3/961/Oz5a/osWnBiZPnqzRo0dXek7btm2rff0ePXooLy9PP/30U5l/ddQH3rw/NptNX375pcuxn3/+WWfPnq2X96YiNblnjtkUP/zwQ9D9Cz46OlqhoaFlWneOHTsWUJ8Pb2rUqJE6duyo77//3tel+CXHjLfs7GzFxsY6j/OZqlhsbKzatGnj958pgk8NREdHKzo6utauv3v3blkslgqnd/s7b96f5ORkzZs3T1lZWc4fQh988IHMZrOuuOIKr7yHP6jJPdu9e7ckufyQDhYNGzbUFVdcoU2bNunGG290Ht+0aZOGDh3qw8r8V2Fhofbv36+rr77a16X4pYSEBNlsNm3atEldu3aVdH4s2aeffqqFCxf6uDr/dPLkSR05csTvfwYRfOrI4cOHlZOTo8OHD6u4uFh79uyRJF100UVq3LixNmzYoOzsbCUnJys8PFybN2/W7Nmzdfvtt/t1X6m3VHV/Bg4cqMTERP3hD3/Q4sWLlZOTo+nTp2vChAmKjIz0bfE+sHXrVm3btk19+/aV1WrV9u3bdffdd+uGG25Q69atfV2eT0ybNk1/+MMfdOWVVyo5OVl//etfdfjwYd1xxx2+Ls0vTJ8+XSkpKWrdurWOHTumRx55RHl5eUGzZEZ5fvnlF/3www/O55mZmdqzZ4+ioqLUunVrTZ06VfPnz9fFF1+siy++WPPnz1dERIRuvvlmH1Zddyq7P1FRUZozZ45GjBih2NhYHTx4UPfff7+io6Nd/vHhl3w8qyxopKamGpLKPDZv3mwYhmG89957RpcuXYzGjRsbERERRocOHYzHH3/cOHv2rG8LryNV3R/DMIxDhw4Z1113nREeHm5ERUUZkydPNgoKCnxXtA/t3LnT6N69u2G1Wg2LxWJceumlRlpampGfn+/r0nzqmWeeMdq0aWM0bNjQSEpKMj799FNfl+Q3brrpJiM2NtYICwsz4uLijOHDhxvffvutr8vyqc2bN5f7cyc1NdUwjPNT2tPS0gybzWaYzWbjt7/9rfHNN9/4tug6VNn9OXPmjDFw4ECjRYsWRlhYmNG6dWsjNTXVOHz4sK/LrpLJMAyjbqMWAACAbzCrCwAABA2CDwAACBoEHwAAEDQIPgAAIGgQfAAAQNAg+AAAgKBB8AEAAEGD4AMAAIIGwQeA36pqp/px48b5ukQA9Qx7dQHwW1lZWc4/r1u3Tg899JC+++4757Hw8HCX88+ePauwsLA6qw9A/UOLDwC/ZbPZnA+r1SqTyeR8XlBQoKZNm2r9+vXq06ePLBaL1qxZozlz5qhLly4u13n88cfVtm1bl2MrV65U+/btZbFYdNlll2np0qUV1rF69Wo1b95chYWFLsdHjBihsWPHeuvbBVAHCD4A6rX77rtPU6ZM0f79+zVo0CC3XvPss89q9uzZmjdvnvbv36/58+frwQcf1Isvvlju+aNGjVJxcbH+/ve/O4+dOHFCb7/9tm699VavfB8A6gZdXQDqtalTp2r48OEevebhhx/Wo48+6nxdQkKC9u3bpxUrVig1NbXM+eHh4br55pu1cuVKjRo1SpL08ssv64ILLlCfPn1q/D0AqDsEHwD12pVXXunR+cePH9eRI0f0xz/+URMmTHAeP3funKxWa4WvmzBhgq666iodPXpUrVq10sqVKzVu3DiZTKZq1w6g7hF8ANRrjRo1cnkeEhIiwzBcjp09e9b5Z7vdLul8d1f37t1dzgsNDa3wfbp27arOnTtr9erVGjRokL755htt2LChpuUDqGMEHwABpUWLFsrOzpZhGM7WmD179ji/HhMTo1atWunHH3/ULbfc4tG1x48fryVLlujo0aPq37+/4uPjvVk6gDpA8AEQUPr06aPjx49r0aJFGjlypDZu3Kj33ntPkZGRznPmzJmjKVOmKDIyUkOGDFFhYaF27Nihn3/+WdOmTavw2rfccoumT5+uZ599VqtXr66LbweAlzGrC0BAad++vZYuXapnnnlGnTt3VkZGhqZPn+5yzvjx4/Xcc89p1apV6tixo3r37q1Vq1YpISGh0mtHRkZqxIgRaty4sYYNG1aL3wWA2mIySneGAwAqNGDAALVv315PPvmkr0sBUA0EHwBwQ05Ojj744APdcsst2rdvny699FJflwSgGhjjAwBuSEpK0s8//6yFCxcSeoB6jBYfAAAQNBjcDAAAggbBBwAABA2CDwAACBoEHwAAEDQIPgAAIGgQfAAAQNAg+AAAgKBB8AEAAEGD4AMAAILG/wdsEtOS1TY9eAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# first to standard linear regression\n", "\n", "lr = LinearRegression()\n", "lr.fit(X, y)\n", "y_pred = lr.predict(X)\n", "print(f'R2: {r2_score(y, y_pred):.03}')\n", "print(f'correlation: {np.corrcoef(y, y_pred)[0, 1]:.03}')\n", "\n", "# confirm that r2 is the square of the correlation\n", "assert np.allclose(r2_score(y, y_pred), np.corrcoef(y, y_pred)[0, 1]**2)\n", "print(f'R2 ({r2_score(y, y_pred):.03}) is ~equal to r^2 ({np.corrcoef(y, y_pred)[0, 1]**2:.03})')\n", "\n", "plt.plot(y, y_pred, 'o')\n", "plt.xlabel('True y')\n", "plt.ylabel('Predicted y')\n", "plt.title('Linear regression - in sample prediction')" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "R2: 0.37077968542027107\n", "correlation: 0.7354056951156511\n", "R2 (0.37077968542027107) is not equal to r^2 (0.540821536408534)\n" ] }, { "data": { "text/plain": [ "Text(0.5, 1.0, 'Linear regression - out of sample prediction')" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHFCAYAAADyj/PrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABLDUlEQVR4nO3deXhU5fn/8c+wZGHJSAhkwRDCTmQXwWgti7KpiLIo4gJSsYJ8LSJVXAkIIliXqmXRKoi4YLVqQeEHBdTaguwiiwsalkoCApJQNAGS5/cHnSlDtplkljNz3q/rmutinpyZuefkTObmWe7HYYwxAgAAsIFqoQ4AAAAgWEh8AACAbZD4AAAA2yDxAQAAtkHiAwAAbIPEBwAA2AaJDwAAsA0SHwAAYBskPgAAwDZIfFCuBQsWyOFwaOPGjWUes2fPHjkcDi1YsCB4gaHKevTooR49eoQ6jKA7cOCAsrKytHXrVr8/95YtW9S9e3c5nU45HA49++yzfn+NUIrUz/rIkSPVpEkTjzaHw6GsrCyfnqe8aysrK0sOh6PyQcJvaoQ6AIS/5ORkrV27Vs2aNQt1KPDB7NmzQx1CSBw4cEBTpkxRkyZN1LFjR78+96hRo3TixAm99dZbqlevXokvU4SPtWvX6vzzz/fpMeVdW7fffrv69evnxwhRWSQ+qLLo6GhdfPHFoQ6jXD///LNq1arl9fG//PKLYmJigvI/tKKiIp0+fVrR0dEBf62zZWRkBPX17GD79u0aPXq0+vfvH+pQbCGQn1N//007//zzfU6kEBgMdaHKSuv+dnXr7tixQzfeeKOcTqcSExM1atQo5eXleTzeGKPZs2erY8eOio2NVb169TRkyBB9//33HsetXLlSAwcO1Pnnn6+YmBg1b95cv/3tb3X48GGP41yvvXnzZg0ZMkT16tUrtzfKNZy3YsUKjRo1Sg0aNFCtWrVUWFgoSVq8eLEyMzNVu3Zt1alTR3379tWWLVtKPM9LL72kli1bKjo6WhkZGXrjjTdKdKG7ztWsWbM0bdo0paenKzo6WmvWrJEkbdy4Uddcc43i4+MVExOjTp066e233/Z4nZ9//lkTJ05Uenq6YmJiFB8fry5duujNN990H/P9999r2LBhSklJUXR0tBITE3X55Zd7dMGXNtR19OhRjR07Vo0aNVJUVJSaNm2qhx56yH0uXBwOh8aNG6fXXntNbdq0Ua1atdShQwctXbq0zPNcWcXFxZo1a5Zat26t6OhoNWzYULfeeqv+/e9/exzXpEkTjRw5ssTjz36fH3/8sS666CJJ0m233SaHw+HVkMb27ds1cOBA1atXTzExMerYsaNeffVV989d19Dp06c1Z84c9/OWZ86cOerQoYPq1KmjunXrqnXr1nrwwQfdP//xxx81duxYZWRkqE6dOmrYsKF69eqlf/zjHx7P47qmnnzySc2cOVNNmjRRbGysevTooW+++UanTp3SpEmTlJKSIqfTqeuuu06HDh0qce6uvvpqvffee2rfvr1iYmLUtGlTPffcc+W+B5dvv/1Ww4cPV8OGDRUdHa02bdroT3/6k1ePdV1L8+bN8/j8vPXWWx7H+etzumDBArVq1cod58KFC8uM69zr4ocfftAdd9yh1NRURUVFKSUlRUOGDNHBgwcrvLZKG+ry9tru0aOH2rZtqw0bNuiyyy5TrVq11LRpUz3xxBMqLi726jzjLAYox/z5840ks2HDhjKPyc7ONpLM/Pnz3W2TJ082kkyrVq3Mo48+alauXGmefvppEx0dbW677TaPx48ePdrUrFnT3HvvvWb58uXmjTfeMK1btzaJiYkmNzfXfdycOXPMjBkzzN/+9jfzySefmFdffdV06NDBtGrVypw8ebLEa6elpZn777/frFy50rz//vsVvsdGjRqZO+64wyxbtsy888475vTp02b69OnG4XCYUaNGmaVLl5q//vWvJjMz09SuXdvs2LHD/Rzz5s0zkszgwYPN0qVLzeuvv25atmxp0tLSTFpaWolz1ahRI9OzZ0/zzjvvmBUrVpjs7GyzevVqExUVZS677DKzePFis3z5cjNy5MgS5/a3v/2tqVWrlnn66afNmjVrzNKlS80TTzxhnn/+efcxrVq1Ms2bNzevvfaa+eSTT8y7775r7r33XrNmzRr3Md27dzfdu3d33//ll19M+/btTe3atc0f/vAHs2LFCvPII4+YGjVqmCuvvNLjnEkyTZo0MV27djVvv/22+eijj0yPHj1MjRo1zHfffVfmua6MO+64w0gy48aNM8uXLzdz5841DRo0MKmpqebHH390H5eWlmZGjBhR4vFnv8+8vDz37/vhhx82a9euNWvXrjX79+8v8/W/+uorU7duXdOsWTOzcOFC8+GHH5obb7zRSDIzZ840xhhz6NAhs3btWiPJDBkyxP28ZXnzzTeNJPN///d/ZsWKFebvf/+7mTt3rrn77rs9XnfMmDHmrbfeMh9//LFZunSp+c1vfmOqVavm8Xt0XVNpaWlmwIABZunSpWbRokUmMTHRtGzZ0txyyy1m1KhRZtmyZWbu3LmmTp06ZsCAAR7xpKWlmUaNGpnGjRubV155xXz00UfmpptuMpLMk08+WeK1zr4ed+zYYZxOp2nXrp1ZuHChWbFihbn33ntNtWrVTFZWVpnnwEWSSU1NNRkZGebNN980f/vb30y/fv2MJPOXv/zFfZw/Pqeu5xg4cKBZsmSJWbRokWnevLlJTU31+Jy64po8ebL7/r///W+TnJxsEhISzNNPP23+/ve/m8WLF5tRo0aZXbt2VXhtuf4unc3ba7t79+6mfv36pkWLFmbu3Llm5cqVZuzYsUaSefXVVys8x/BE4oNyVTXxmTVrlsexY8eONTExMaa4uNgYY9xfFk899ZTHcfv37zexsbHmvvvuK/U1i4uLzalTp8zevXuNJPPBBx+UeO1HH33Up/d46623erTv27fP1KhRw/zf//2fR/vx48dNUlKSuf76640xxhQVFZmkpCTTrVs3j+P27t1ratasWWri06xZM49kzRhjWrdubTp16mROnTrl0X711Veb5ORkU1RUZIwxpm3btubaa68t8/0cPnzYSDLPPvtsue/73MRn7ty5RpJ5++23PY6bOXOmkWRWrFjhbpNkEhMTTX5+vrstNzfXVKtWzcyYMaPc1/XFrl27jCQzduxYj/bPP//cSDIPPvigu82bxMcYYzZs2FDiei3PsGHDTHR0tNm3b59He//+/U2tWrXMsWPH3G2SzF133VXhc44bN86cd955Xr2+y+nTp82pU6fM5Zdfbq677jp3u+ua6tChg/saMcaYZ5991kgy11xzjcfzjB8/3kgyeXl57ra0tDTjcDjM1q1bPY7t3bu3iYuLMydOnPB4rbPPXd++fc3555/v8Xyu9xgTE2OOHj1a7vuSZGJjYz3+k3P69GnTunVr07x5c3ebPz6nKSkppnPnzu6/P8YYs2fPnhKfU1dcZyc+o0aNMjVr1jQ7d+4s872Ud22dm/j4cm13797dSDKff/65x7EZGRmmb9++ZcaD0jHUhYC65pprPO63b99eBQUF7q72pUuXyuFw6Oabb9bp06fdt6SkJHXo0EEff/yx+7GHDh3SnXfeqdTUVNWoUUM1a9ZUWlqaJGnXrl0lXnvw4ME+xXru8f/v//0/nT59WrfeeqtHbDExMerevbs7tq+//lq5ubm6/vrrPR7fuHFjXXrppWWel5o1a7rv7969W1999ZVuuukmSfJ4vSuvvFI5OTn6+uuvJUldu3bVsmXLNGnSJH388cf65ZdfPJ47Pj5ezZo105NPPqmnn35aW7Zs8ao7fPXq1apdu7aGDBni0e4aPlq1apVHe8+ePVW3bl33/cTERDVs2FB79+4t93Vcc5pct/Jicw0BnjuE1bVrV7Vp06ZETIGwevVqXX755UpNTfVoHzlypH7++WetXbvW5+fs2rWrjh07phtvvFEffPBBieFal7lz56pz586KiYlxX/OrVq0q9Xq/8sorVa3a//6kt2nTRpJ01VVXeRznat+3b59H+wUXXKAOHTp4tA0fPlz5+fnavHlzqfEVFBRo1apVuu6661SrVq0S121BQYHWrVtXwdmQLr/8ciUmJrrvV69eXTfccIN2795dYtinKp/TAwcOaPjw4R5DTmlpabrkkksqjHHZsmXq2bOn+/xVla/XdlJSkrp27erR1r59+wo/byiJxAcBVb9+fY/7rgm8ri/rgwcPyhijxMRE1axZ0+O2bt069xdCcXGx+vTpo7/+9a+67777tGrVKq1fv979R/XcL3/pzGozX5x7/MGDByVJF110UYnYFi9e7I7tyJEjkuTxh9ultLbyXmvixIklXmvs2LGS5H695557Tvfff7/ef/999ezZU/Hx8br22mv17bffSjozN2HVqlXq27evZs2apc6dO6tBgwa6++67dfz48TLf/5EjR5SUlFRiHkLDhg1Vo0YN9/t0Ofd3K535/Zb2uzhbs2bNPN7f1KlTy41JKv13mZKSUiKmQDhy5EiZr+/6ua9uueUWvfLKK9q7d68GDx6shg0bqlu3blq5cqX7mKefflpjxoxRt27d9O6772rdunXasGGD+vXrV+o5jo+P97gfFRVVbntBQYFHe1JSUonndLWV9R6PHDmi06dP6/nnny9x3V555ZWSVGZSV9nXrurntLzXKs+PP/7o18nJvl7blf28oSRWdSGkEhIS5HA49I9//KPUVU2utu3bt+uLL77QggULNGLECPfPd+/eXeZz+7rS49zjExISJEnvvPOOu2epNK4/SK4/wGfLzc316bUeeOABDRo0qNTHtGrVSpJUu3ZtTZkyRVOmTNHBgwfdvT8DBgzQV199JenM/2JffvllSdI333yjt99+W1lZWTp58qTmzp1b5vv4/PPPZYzxiO/QoUM6ffq0O8aqWrJkicdkaVcCUVZMkpSTk1PiS+fAgQMeMcXExJSYhC2d+eKtSuz169dXTk5OifYDBw5IUqWf+7bbbtNtt92mEydO6NNPP9XkyZN19dVX65tvvlFaWpoWLVqkHj16aM6cOR6PKy95rYrSrlVXW2lfupJUr149Va9eXbfccovuuuuuUo9JT0/362tX9XNa3muVp0GDBiV6n6rCl2sb/kXig5C6+uqr9cQTT+iHH34oMVR0Ntcfu3OTo3nz5gUstr59+6pGjRr67rvvyh02a9WqlZKSkvT2229rwoQJ7vZ9+/bpX//6V7lf7Gc/R4sWLfTFF1/o8ccf9zrGxMREjRw5Ul988YWeffbZUpftt2zZUg8//LDefffdMocspDPDDW+//bbef/99XXfdde5216qXyy+/3Ou4ytOuXTuvj+3Vq5ckadGiRe4VM5K0YcMG7dq1Sw899JC7rUmTJtq2bZvH47/55ht9/fXXHl8i5/Y6VuTyyy/Xe++9pwMHDnj8LhcuXKhatWpVedlz7dq11b9/f508eVLXXnutduzYobS0NDkcjhLX+7Zt27R27doSw27+sGPHDn3xxRcew11vvPGG6tatq86dO5f6mFq1aqlnz57asmWL2rdv7+5N8tWqVat08OBBdw9pUVGRFi9erGbNmlXYy+LL5zQ5OVlvvvmmJkyY4P6bsnfvXq8+p/3799drr72mr7/+2v2fkHP5cm35cm3Dv0h84JXVq1drz549Jdpd3dmVdemll+qOO+7Qbbfdpo0bN+rXv/61ateurZycHH322Wdq166dxowZo9atW6tZs2aaNGmSjDGKj4/XkiVLPIYG/K1JkyaaOnWqHnroIX3//ffq16+f6tWrp4MHD2r9+vXunpdq1appypQp+u1vf6shQ4Zo1KhROnbsmKZMmaLk5GSPeRflmTdvnvr376++fftq5MiRatSokY4ePapdu3Zp8+bN+stf/iJJ6tatm66++mq1b99e9erV065du/Taa68pMzNTtWrV0rZt2zRu3DgNHTpULVq0UFRUlFavXq1t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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "\n", "clf = LinearRegression\n", "kf = KFold(n_splits=8)\n", "pred_y = np.zeros_like(y)\n", "\n", "for split_idx, (train_idx, test_idx) in enumerate(kf.split(X)):\n", " train_X = X[train_idx, :]\n", " train_y = y[train_idx]\n", " test_X = X[test_idx, :]\n", " test_y = y[test_idx]\n", "\n", " # fit the model\n", " if clf is None:\n", " clf = RidgeCV\n", " model = clf()\n", " model.fit(train_X, train_y)\n", " pred_y[test_idx] = model.predict(test_X)\n", "\n", "print('R2: ', r2_score(y, pred_y))\n", "print('correlation:', np.corrcoef(y, pred_y)[0, 1])\n", "\n", "print(f'R2 ({r2_score(y, pred_y)}) is not equal to r^2 ({np.corrcoef(y, pred_y)[0, 1]**2})')\n", "plt.plot(y, pred_y, 'o')\n", "plt.xlabel('True y')\n", "plt.ylabel('Predicted y')\n", "plt.title('Linear regression - out of sample prediction')" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "R2 (in-sample): 0.889\n", "correlation (in-sample): 0.943\n", "R2 (out-of-sample): -13.970\n", "correlation (out-of-sample): -0.121\n", "\n", "R2 (mean prediction): 0.000\n", "R2 (-13.970445357380074) is not equal to r^2 (0.01465717598485716)\n" ] }, { "data": { "text/plain": [ "Text(0.5, 1.0, 'Linear regression (shuffled y)- out of sample prediction')" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHFCAYAAADyj/PrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABUtklEQVR4nO3deVxU9f4/8NeAMAMIE4gwgyIgroSKaBpZ4ZJbSlpmmUuShaV5Da1bmhlgqaFdsyxxKbfMpdXSkq8W6s3CXNDMJUtF4SqIiYJXA1k+vz/8zVyGmYEZmP28no/HPB7MZ87Mec+ZM3PefFaZEEKAiIiISALc7B0AERERka0w8SEiIiLJYOJDREREksHEh4iIiCSDiQ8RERFJBhMfIiIikgwmPkRERCQZTHyIiIhIMpj4EBERkWQw8bGyNWvWQCaT4eDBg0a3OXfuHGQyGdasWWO7wKjRevfujd69e9tt/z/++CPkcjnOnz9v8nM059rbb79t0VjOnTuHIUOGICAgADKZDMnJyQCAw4cPIz4+HkqlEjKZDIsXL8bu3bshk8mwe/dui+1f8z07d+6cRV5v3LhxGD58uEVey5IuXryI1NRUHDlyxOKvbeizciWu+jubmJiI8PBwnTKZTIbU1FSzXqeucys1NRUymazhQTqYJvYOgAC1Wo3s7GxERkbaOxQyw9KlS+22byEEkpOTkZSUhLCwMLvFoTFt2jT88ssvWLVqFVQqFdRqNQBgwoQJuHHjBjZt2gR/f3+Eh4fj999/t3O09UtNTUWHDh2QlZWFvn372jscrYsXLyItLQ3h4eGIiYmx6Gsb+qzIOWVnZ6Nly5ZmPaeuc+uZZ57BoEGDLBihfTHxcQByuRx33323vcOo082bN+Ht7W3y9n///TcUCoVN/kuoqqpCZWUl5HK51fdVU1RUlE33V1NmZiZycnKwYcMGu8VQ07Fjx9CjRw+9WpJjx44hKSkJgwcP1pY5Q+ITGRmJQYMG4a233nKoxMeaDH1WZD3W/I209PWkZcuWZidSjoxNXQ7AUBWspmrx+PHjeOKJJ6BUKhEcHIwJEyagpKRE5/lCCCxduhQxMTHw8vKCv78/Hn30UZw9e1Znu507d2LYsGFo2bIlFAoF2rRpg2effRZ//fWXznaafefk5ODRRx+Fv79/nbVRmmaGHTt2YMKECWjevDm8vb1RXl4OANi8eTPi4uLg4+ODpk2bYuDAgTh8+LDe66xcuRLt2rWDXC5HVFQUNmzYoFeNqzlWCxYswJtvvomIiAjI5XLs2rULAHDw4EE89NBDCAgIgEKhQNeuXfHpp5/q7OfmzZt46aWXEBERAYVCgYCAAHTv3h0bN27UbnP27FmMGjUKISEhkMvlCA4ORr9+/XSqgQ01dRUXF2Py5Mlo0aIFPD090bp1a8yaNUt7LDRkMhmmTJmCjz/+GB07doS3tze6dOmCbdu2GT3ONWVkZOCuu+5C+/btdcqzsrLQu3dvNGvWDF5eXmjVqhVGjBiBmzdv6r3GokWLEBERgaZNmyIuLg779u3TedxYU17Nz0TTbHX69Gls374dMplMey7LZDJUVlYiIyNDW14XUz47ANi3bx969eoFhUKBkJAQzJw5ExUVFfUcMeDjjz+GTCZDdna23mNz5syBh4cHLl68qC0bN24cvv/+e5w5c6be1zamuroaCxYsQIcOHSCXyxEUFIQnn3wS//nPf3S2Cw8PR2Jiot7za34Gu3fvxl133QUAeOqpp7THtL4mjWPHjmHYsGHw9/eHQqFATEwM1q5dq328IZ9VRkYGunTpgqZNm8LX1xcdOnTAq6++qn388uXLmDx5MqKiotC0aVMEBQWhb9+++PHHH3VeR/N9XrhwIdLT0xEeHg4vLy/07t0bf/zxByoqKjBjxgyEhIRAqVTi4YcfRlFRkd6xGzp0KL766it07twZCoUCrVu3xnvvvVfne9D4888/MXr0aAQFBUEul6Njx4744IMPTHqu5nu8fPlynd+uTZs26Wxnqd/INWvWoH379to4161bZzSu2ufFhQsXMHHiRISGhsLT0xMhISF49NFHcenSpXrPLUNNXaae271790Z0dDQOHDiA++67D97e3mjdujXeeustVFdXm3ScLU6QVa1evVoAEAcOHDC6TW5urgAgVq9erS1LSUkRAET79u3F66+/Lnbu3CkWLVok5HK5eOqpp3Sen5SUJDw8PMSLL74oMjMzxYYNG0SHDh1EcHCwKCws1G6XkZEh5s+fL7755huxZ88esXbtWtGlSxfRvn17cevWLb19h4WFiVdeeUXs3LlTbNmypd732KJFCzFx4kSxfft28fnnn4vKykoxd+5cIZPJxIQJE8S2bdvEl19+KeLi4oSPj484fvy49jWWL18uAIgRI0aIbdu2iU8++US0a9dOhIWFibCwML1j1aJFC9GnTx/x+eefix07dojc3FyRlZUlPD09xX333Sc2b94sMjMzRWJiot6xffbZZ4W3t7dYtGiR2LVrl9i2bZt46623xJIlS7TbtG/fXrRp00Z8/PHHYs+ePeKLL74QL774oti1a5d2m/j4eBEfH6+9//fff4vOnTsLHx8f8fbbb4sdO3aI2bNniyZNmogHH3xQ55gBEOHh4aJHjx7i008/Fd99953o3bu3aNKkiThz5ozRYy2EEOXl5cLLy0u8/PLLOuW5ublCoVCI/v37iy1btojdu3eLTz75RIwbN05cvXpV5/iFh4eLQYMGiS1btogtW7aITp06CX9/f3Ht2jWj709j/Pjx2s+kpKREZGdnC5VKJXr16iWys7NFdna2KCwsFNnZ2QKAePTRR7XlQgixa9cuAUDnWJr62R0/flx4e3uLqKgosXHjRvH111+LgQMHilatWgkAIjc3t87jplKpxJgxY3TKKyoqREhIiBg5cqRO+aVLlwQA8d577xl9zfpMnDhRABBTpkwRmZmZYtmyZaJ58+YiNDRUXL58WbtdWFiYGD9+vN7za34GJSUl2u/aa6+9pj2m+fn5Rvf/+++/C19fXxEZGSnWrVsnvv32W/HEE08IACI9PV0IIURRUZHRz8qQjRs3CgDiH//4h9ixY4f4/vvvxbJly8TUqVN19jtp0iSxadMmsXv3brFt2zbx9NNPCzc3N53PXXM+hoWFiYSEBLFt2zaxfv16ERwcLNq1ayfGjRsnJkyYILZv3y6WLVsmmjZtKhISEnTiCQsLEy1atBCtWrUSq1atEt99950YM2aMACAWLlyot6/a55NSqRSdOnUS69atEzt27BAvvviicHNzE6mpqUaPgQYAERoaqj0fv/nmGzFo0CABQHz22Wfa7SzxG6l5jWHDhomtW7eK9evXizZt2ojQ0FCd30hNXCkpKdr7//nPf4RarRaBgYFi0aJF4vvvvxebN28WEyZMECdPnqz33NJcE2oy9dyOj48XzZo1E23bthXLli0TO3fuFJMnTxYAxNq1a+s9xtbAxMfKGpv4LFiwQGfbyZMnC4VCIaqrq4UQQvuD9a9//Utnu/z8fIMXR43q6mpRUVEhzp8/LwCIr7/+Wm/fr7/+ulnv8cknn9Qpz8vLE02aNBH/+Mc/dMqvX78uVCqVeOyxx4QQQlRVVQmVSiV69uyps9358+eFh4eHwcQnMjJSJ1kTQogOHTqIrl27ioqKCp3yoUOHCrVaLaqqqoQQQkRHR4vhw4cbfT9//fWXACAWL15c5/uunRgsW7ZMABCffvqpznbp6ekCgNixY4e2DIAIDg4WpaWl2rLCwkLh5uYm5s+fX+d+f/nlFwFAbNq0Saf8888/FwDEkSNHjD5Xc/w6deokKisrteX79+8XAMTGjRuNvj+NmomPRlhYmBgyZIjetgDE888/r1NmKPEx9bN7/PHHhZeXl05CX1lZKTp06FBv4iPE7XPb09NTXLp0SVu2efNmAUDs2bNHb/sWLVqIxx9/vM7XNObkyZMCgJg8ebJOuebze/XVV7VlpiQ+Qghx4MABvd+KuowaNUrI5XKRl5enUz548GDh7e2tk+ga+qwMmTJlirjjjjtM2r9GZWWlqKioEP369RMPP/ywtlxzPnbp0kX7GQshxOLFiwUA8dBDD+m8TnJysgAgSkpKtGVhYWFCJpPpnff9+/cXfn5+4saNGzr7qnnsBg4cKFq2bKnzepr3qFAoRHFxcZ3vC4DR87FNmzbaMkv8RoaEhIjY2Fjtb78QQpw7d07vN1ITV83EZ8KECcLDw0OcOHHC6Hup69yqnfiYc27Hx8cLAOKXX37R2TYqKkoMHDjQaDzWxKYuB/fQQw/p3O/cuTPKysq01b3btm2DTCbD2LFjUVlZqb2pVCp06dJFZ+RMUVERnnvuOYSGhqJJkybw8PDQdow9efKk3r5HjBhhVqy1t/+///s/VFZW4sknn9SJTaFQID4+XhvbqVOnUFhYiMcee0zn+a1atUKvXr2MHhcPDw/t/dOnT+P333/HmDFjAEBnfw8++CAKCgpw6tQpAECPHj2wfft2zJgxA7t378bff/+t89oBAQGIjIzEwoULsWjRIhw+fNikKtmsrCz4+Pjg0Ucf1SnXNGH88MMPOuV9+vSBr6+v9n5wcDCCgoLqHaWlaY4JCgrSKY+JiYGnpycmTpyItWvX6jV11jRkyBC4u7tr73fu3BkAzBohZinmfHa7du1Cv379EBwcrH2+u7s7Hn/8cZP2NWnSJAC3m1U13n//fXTq1An333+/3vZBQUG4cOGC9r6mP5nmVtd5oWl+rd2E1aNHD3Ts2FHvfLCGrKws9OvXD6GhoTrliYmJuHnzpsFmv/r06NED165dwxNPPIGvv/5ar6lcY9myZYiNjYVCodD+3vzwww8Gf2sefPBBuLn973LUsWNHALfP05o05Xl5eTrld955J7p06aJTNnr0aJSWliInJ8dgfGVlZfjhhx/w8MMPw9vbW++8Kysr02v+NcTY+Xj69Gm9Zp/G/EZevHgRo0eP1mlyCgsLwz333FNvjNu3b0efPn20x6+xzD23VSoVevTooVPWuXNnu/zeAOzj4/CaNWumc1/TgVdzsb506RKEEAgODoaHh4fObd++fdofperqagwYMABffvklXn75Zfzwww/Yv3+/9otd++IPQDsyx1S1t7906RIA4K677tKLbfPmzdrYrly5AgA6Px4ahsrq2tdLL72kt6/JkycDgHZ/7733Hl555RVs2bIFffr0QUBAAIYPH44///wTwO328R9++AEDBw7EggULEBsbi+bNm2Pq1Km4fv260fd/5coVqFQqvbbwoKAgNGnSRPs+NWp/tsDtz9fQZ1GT5nGFQqFTHhkZie+//x5BQUF4/vnnERkZicjISLz77rt6r1HfeWVL5nx2mmNcm6EyQ4KDg/H4449j+fLlqKqqwtGjR/Hjjz9iypQpBrdXKBQ6xyQyMlInvjlz5hjdl+bzNvQ9CgkJ0TsfrOHKlStG96953Fzjxo3DqlWrcP78eYwYMQJBQUHo2bMndu7cqd1m0aJFmDRpEnr27IkvvvgC+/btw4EDBzBo0CCD51hAQIDOfU9PzzrLy8rKdMrrOieMvccrV66gsrISS5Ys0TvvHnzwQQAwmtQ1dN+N/Y1s6Ll/+fJli3ZONvfcbuhvnbVwVJeTCwwMhEwm087pUpum7NixY/j111+xZs0ajB8/Xvv46dOnjb62uaMNam8fGBgIAPj888/rHHKt+VJofgRqKiwsNGtfM2fOxCOPPGLwOZqOwD4+PkhLS0NaWhouXbqkrf1JSEjQjjgKCwvDRx99BAD4448/8OmnnyI1NRW3bt3CsmXLjL6PX375BUIInfiKiopQWVmpjbGxNK9TXFys99h9992H++67D1VVVTh48CCWLFmC5ORkBAcHY9SoUWbtR6FQ6HWkB0y7GJjDnM+uWbNmBs8JY+eJIS+88AI+/vhjfP3118jMzMQdd9yhrW2qrbi4WKdz/datW3U6qmsSCEM053VBQYHeRefixYs654NCodDrAA/cPtaNOW+aNWuGgoICvXJNrWFDX/upp57CU089hRs3buDf//43UlJSMHToUPzxxx8ICwvD+vXr0bt3b2RkZOg8r65/HBqjrnPC0EUXAPz9/eHu7o5x48bh+eefN7hNRESERffd2N/Ihp77zZs316t9agxzzm1HxMTHyQ0dOhRvvfUWLly4oNdUVJPmC1c7OVq+fLnVYhs4cCCaNGmCM2fO1Nls1r59e6hUKnz66aeYPn26tjwvLw8///xznReXmq/Rtm1b/Prrr5g3b57JMQYHByMxMRG//vorFi9ebHDYfrt27fDaa6/hiy++MFptDtyu8v7000+xZcsWPPzww9pyzciLfv36mRxXXTTV1XWNNnJ3d0fPnj3RoUMHfPLJJ8jJyTE78QkPD8dnn32G8vJy7Xlz5coV/Pzzz/Dz82v4G6jFnM+uT58++Oabb3Dp0iVtbWBVVRU2b95s8v66deuGe+65B+np6Th27BgmTpwIHx8fve0qKyuRn5+v/e8fADp16mTyfjTD4NevX68dMQMABw4cwMmTJzFr1ixtWXh4OI4eParz/D/++AOnTp3SuYiYWzPXr18/fPXVV7h48aLO92jdunXw9vZu9LBnHx8fDB48GLdu3cLw4cNx/PhxhIWFQSaT6f3WHD16FNnZ2XrNbpZw/Phx/PrrrzrNXRs2bICvry9iY2MNPsfb2xt9+vTB4cOH0blzZ21tkrl++OEHg+djZGRkvbUs5vxGqtVqbNy4EdOnT9f+np8/f96k38jBgwfj448/xqlTp/RGgmqYc26Zc247IiY+NpKVlWVwVtmaP6oN0atXL0ycOBFPPfUUDh48iPvvvx8+Pj4oKCjA3r170alTJ0yaNAkdOnRAZGQkZsyYASEEAgICsHXrVp3qaUsLDw/HnDlzMGvWLJw9exaDBg2Cv78/Ll26hP3792trXtzc3JCWloZnn30Wjz76KCZMmIBr164hLS0NarVap+2/LsuXL8fgwYMxcOBAJCYmokWLFiguLsbJkyeRk5ODzz77DADQs2dPDB06FJ07d4a/vz9OnjyJjz/+GHFxcfD29sbRo0cxZcoUjBw5Em3btoWnpyeysrJw9OhRzJgxw+j+n3zySXzwwQcYP348zp07h06dOmHv3r2YN28eHnzwQTzwwAMWOa4tW7ZE69atsW/fPkydOlVbvmzZMmRlZWHIkCFo1aoVysrKsGrVKgBo0L7HjRuH5cuXY+zYsUhKSsKVK1ewYMECiyY9GqZ+dq+99hq++eYb9O3bF6+//jq8vb3xwQcf4MaNG2bt74UXXsDjjz8OmUymbU6r7ejRo7h58yb69OnToPfUvn17TJw4EUuWLIGbmxsGDx6Mc+fOYfbs2QgNDcW0adO0244bNw5jx47F5MmTMWLECJw/fx4LFixA8+bNdV4zMjISXl5e+OSTT9CxY0c0bdoUISEhRi98KSkp2LZtG/r06YPXX38dAQEB+OSTT/Dtt99iwYIFUCqVZr+vpKQkeHl5oVevXlCr1SgsLMT8+fOhVCq1F8GhQ4fijTfeQEpKCuLj43Hq1CnMmTMHERERqKysNHuf9QkJCcFDDz2E1NRUqNVqrF+/Hjt37kR6enqd84+9++67uPfee3Hfffdh0qRJCA8Px/Xr13H69Gls3boVWVlZ9e47MDAQffv2xezZs+Hj44OlS5fi999/1xvSbog5v5FvvPEGnnnmGTz88MNISkrCtWvXkJqaalJT15w5c7B9+3bcf//9ePXVV9GpUydcu3YNmZmZmD59uvb6YOq5Zc657ZDs0qVaQjS9+Y3dcnNz6xzVVXNYYM3Xqz16ZdWqVaJnz57Cx8dHeHl5icjISPHkk0+KgwcParc5ceKE6N+/v/D19RX+/v5i5MiRIi8vT28EgLF91/cejY1c27Jli+jTp4/w8/MTcrlchIWFiUcffVR8//33OtutWLFCtGnTRnh6eop27dqJVatWiWHDhomuXbtqt9Ecq5rDVGv69ddfxWOPPSaCgoKEh4eHUKlUom/fvmLZsmXabWbMmCG6d+8u/P39hVwuF61btxbTpk0Tf/31lxDi9jDmxMRE0aFDB+Hj4yOaNm0qOnfuLN555x2dkVCGRj1duXJFPPfcc0KtVosmTZqIsLAwMXPmTFFWVqazHYyMoDE2uqe22bNnC39/f53Xzc7OFg8//LAICwsTcrlcNGvWTMTHx4tvvvnGpONX+zwQQoi1a9eKjh07CoVCIaKiosTmzZutMqpLCNM+OyGE+Omnn8Tdd98t5HK5UKlU4p///KdYsWKFSaO6NMrLy4VcLheDBg0yus3s2bNFYGCg3mdnjqqqKpGeni7atWsnPDw8RGBgoBg7dqzeEPTq6mqxYMEC0bp1a6FQKET37t1FVlaWwXNs48aNokOHDsLDw8PgZ1bbb7/9JhISEoRSqRSenp6iS5cuBkfuGDsna1u7dq3o06ePCA4OFp6eniIkJEQ89thj4ujRo9ptysvLxUsvvSRatGghFAqFiI2NFVu2bNE7d4ydj5pzpOaQcCEM/9Zozr3PP/9c3HnnncLT01OEh4eLRYsW6TzX0O+spnzChAmiRYsWwsPDQzRv3lzcc8894s0336z3WGiO2dKlS0VkZKTw8PAQHTp0EJ988km9cddk6m/khx9+KNq2bavzG2no+2jovMjPzxcTJkwQKpVKeHh4aD+3miMcjZ1bhoazm3pux8fHizvvvFPvPRuK21ZkQghhg/yKyGzXrl1Du3btMHz4cKxYscLe4TiUixcvIiIiAuvWrTN5RBP9z9atW/HQQw/h22+/NVjrWlVVhTZt2mD06NGYO3euHSIkU4WHhyM6OtrkyT8tSSaT4fnnn8f7779v831Tw7GpixxCYWEh5s6diz59+qBZs2Y4f/483nnnHVy/fh0vvPCCvcNzOCEhIUhOTsbcuXMxcuRIk5sDpe7EiRM4f/48XnzxRcTExBhdnmH9+vX473//i3/+8582jpCIrI2JDzkEuVyOc+fOYfLkySguLtZ2vFy2bBnuvPNOe4fnkF577TV4e3vjwoULVukw6oomT56Mn376CbGxsVi7dq3RkYvV1dX45JNPcMcdd9g2QCKyOjZ1ERERkWSwfpyIiIgkg4kPERERSQYTHyIiIpIMdm6upbq6GhcvXoSvr6/ZSzYQERGRfQghcP36dYSEhNQ50pWJTy0XL17kCBkiIiInlZ+fX+dyIUx8avH19QVw+8BZY2p+IiIisrzS0lKEhoZqr+PGMPGpRdO85efnx8SHiIjIydTXTYWdm4mIiEgymPgQERGRZDDxISIiIslg4kNERESSwcSHiIiIJIOJDxEREUkGEx8iIiKSDCY+REREJBlMfIiIiEgyOHMzEdH/V1UtsD+3GEXXyxDkq0CPiAC4u3GxYiJXwsSHiAhA5rECpG09gYKSMm2ZWqlASkIUBkWr7RgZEVkSm7qISPIyjxVg0vocnaQHAApLyjBpfQ4yjxXYKTIisjQmPkQkaVXVAmlbT0AYeExTlrb1BKqqDW1BRM6GiQ8RSdr+3GK9mp6aBICCkjLszy22XVBEZDVMfIhI0oquG096GrIdETk2Jj5EJGlBvgqLbkdEjo2JDxFJWo+IAKiVChgbtC7D7dFdPSICbBkWEVkJEx8ikjR3NxlSEqIAQC/50dxPSYjifD5ELsKpEp8LFy5g7NixaNasGby9vRETE4NDhw5pHxdCIDU1FSEhIfDy8kLv3r1x/PhxO0ZMRM5gULQaGWNjoVLqNmeplApkjI3lPD5ELsRpJjC8evUqevXqhT59+mD79u0ICgrCmTNncMcdd2i3WbBgARYtWoQ1a9agXbt2ePPNN9G/f3+cOnUKvr6+9gueiBzeoGg1+kepOHMzkYuTCSGcYnKKGTNm4KeffsKPP/5o8HEhBEJCQpCcnIxXXnkFAFBeXo7g4GCkp6fj2WefNWk/paWlUCqVKCkpgZ+fn8XiJyIiIusx9frtNE1d33zzDbp3746RI0ciKCgIXbt2xcqVK7WP5+bmorCwEAMGDNCWyeVyxMfH4+effzb6uuXl5SgtLdW5ERERkWtymsTn7NmzyMjIQNu2bfF///d/eO655zB16lSsW7cOAFBYWAgACA4O1nlecHCw9jFD5s+fD6VSqb2FhoZa700QERGRXTlN4lNdXY3Y2FjMmzcPXbt2xbPPPoukpCRkZGTobCeT6bbHCyH0ymqaOXMmSkpKtLf8/HyrxE9ERET25zSJj1qtRlRUlE5Zx44dkZeXBwBQqVQAoFe7U1RUpFcLVJNcLoefn5/OjYiIiFyT0yQ+vXr1wqlTp3TK/vjjD4SFhQEAIiIioFKpsHPnTu3jt27dwp49e3DPPffYNFYiIiJyTE4znH3atGm45557MG/ePDz22GPYv38/VqxYgRUrVgC43cSVnJyMefPmoW3btmjbti3mzZsHb29vjB492s7RExERkSNwmsTnrrvuwldffYWZM2dizpw5iIiIwOLFizFmzBjtNi+//DL+/vtvTJ48GVevXkXPnj2xY8cOzuFDREREAJxoHh9b4Tw+REREzsfU67fT1PgQETmCqmrB2Z2JnBgTHyIiE2UeK0Da1hMoKCnTlqmVCqQkRHE9LyIn4TSjuoiI7CnzWAEmrc/RSXoAoLCkDJPW5yDzWIGdIiMiczDxISKqR1W1QNrWEzDUIVJTlrb1BKqq2WWSyNEx8SEiqsf+3GK9mp6aBICCkjLszy22XVBE1CBMfIiI6lF03XjS05DtiMh+mPgQEdUjyFdh0e2IyH6Y+BAR1aNHRADUSgWMDVqX4fborh4RAbYMi4gagIkPEVE93N1kSEm4vUhy7eRHcz8lIYrz+RA5ASY+REQmGBStRsbYWKiUus1ZKqUCGWNjOY8PkZPgBIZERCYaFK1G/ygVZ24mcmJMfIiIzODuJkNcZDN7h0FEDcSmLiIiIpIMJj5EREQkGUx8iIiISDKY+BAREZFkMPEhIiIiyWDiQ0RERJLBxIeIiIgkg4kPERERSQYTHyIiIpIMJj5EREQkGUx8iIiISDKY+BAREZFkMPEhIiIiyWDiQ0RERJLBxIeIiIgkg4kPERERSQYTHyIiIpIMJj5EREQkGUx8iIiISDKY+BAREZFkMPEhIiIiyWDiQ0RERJLBxIeIiIgkg4kPERERSQYTHyIiIpIMJj5EREQkGUx8iIiISDKY+BAREZFkMPEhIiIiyWDiQ0RERJLBxIeIiIgkg4kPERERSQYTHyIiIpIMJj5EREQkGU6b+MyfPx8ymQzJycnaMiEEUlNTERISAi8vL/Tu3RvHjx+3X5BERETkUJwy8Tlw4ABWrFiBzp0765QvWLAAixYtwvvvv48DBw5ApVKhf//+uH79up0iJSIiIkfidInPf//7X4wZMwYrV66Ev7+/tlwIgcWLF2PWrFl45JFHEB0djbVr1+LmzZvYsGGDHSMmIiIiR+F0ic/zzz+PIUOG4IEHHtApz83NRWFhIQYMGKAtk8vliI+Px88//2z09crLy1FaWqpzIyIiItfUxN4BmGPTpk3IycnBgQMH9B4rLCwEAAQHB+uUBwcH4/z580Zfc/78+UhLS7NsoEREROSQnKbGJz8/Hy+88ALWr18PhUJhdDuZTKZzXwihV1bTzJkzUVJSor3l5+dbLGYiIiJyLE5T43Po0CEUFRWhW7du2rKqqir8+9//xvvvv49Tp04BuF3zo1artdsUFRXp1QLVJJfLIZfLrRc4EREROQynqfHp168ffvvtNxw5ckR76969O8aMGYMjR46gdevWUKlU2Llzp/Y5t27dwp49e3DPPffYMXIiIiJyFE5T4+Pr64vo6GidMh8fHzRr1kxbnpycjHnz5qFt27Zo27Yt5s2bB29vb4wePdoeIRMREZGDcZrExxQvv/wy/v77b0yePBlXr15Fz549sWPHDvj6+to7NCIiInIAMiGEsHcQjqS0tBRKpRIlJSXw8/OzdzhERERkAlOv307Tx4eIiIiosVyqqYuIzFdVLbA/txhF18sQ5KtAj4gAuLsZnwKCiMiZMfEhkrDMYwVI23oCBSVl2jK1UoGUhCgMilbX8UwiIufEpi4iico8VoBJ63N0kh4AKCwpw6T1Ocg8VmCnyIiIrIeJD5EEVVULpG09AUMjGzRlaVtPoKqaYx+IyLUw8SGSoP25xXo1PTUJAAUlZdifW2y7oIiIbICJD5EEFV03nvQ0ZDsiImfBxIdIgoJ8jS/025DtiIicBRMfIgnqEREAtVIBY4PWZbg9uqtHRIAtwyIisjomPkQS5O4mQ0pCFADoJT+a+ykJUZzPh4hcDhMfIokaFK1GxthYqJS6zVkqpQIZY2M5jw8RuSROYEgkYYOi1egfpeLMzUQkGUx8iCTO3U2GuMhm9g6DiMgm2NRFREREksEaHyIiF8eFaIn+h4kPEZEL40K0RLrY1EVE5KK4EC2RPiY+REQuiAvREhnGxIeIyAVxIVoiw5j4EBG5IC5ES2QYEx8iIhfEhWiJDGPiQ0TkgrgQLZFhTHyIiFwQF6IlMoyJDxGRi+JCtET6OIEhEZEL40K0RLqY+BARuTguREv0P2zqIiIiIslg4kNERESSwcSHiIiIJIOJDxEREUkGEx8iIiKSDCY+REREJBlMfIiIiEgymPgQERGRZDDxISIiIslg4kNERESSwcSHiIiIJIOJDxEREUkGEx8iIiKSDCY+REREJBlMfIiIiEgymPgQERGRZDDxISIiIsloYu8AiMj+qqoF9ucWo+h6GYJ8FegREQB3N5m9wyIXwnOMHAUTHyKJyzxWgLStJ1BQUqYtUysVSEmIwqBotR0jI1fBc4wcCZu6iCQs81gBJq3P0bkgAUBhSRkmrc9B5rECO0VGroLnGDkap0l85s+fj7vuugu+vr4ICgrC8OHDcerUKZ1thBBITU1FSEgIvLy80Lt3bxw/ftxOERM5tqpqgbStJyAMPKYpS9t6AlXVhrYgqh/PMXJETpP47NmzB88//zz27duHnTt3orKyEgMGDMCNGze02yxYsACLFi3C+++/jwMHDkClUqF///64fv26HSMnqaqqFsg+cwVfH7mA7DNX9H7c63vc2vbnFuv9F16TAFBQUob9ucW2C4pcCs8xckRO08cnMzNT5/7q1asRFBSEQ4cO4f7774cQAosXL8asWbPwyCOPAADWrl2L4OBgbNiwAc8++6w9wiaJqq9PgyP0eSi6bvyC1JDtiGrjOUaOyGlqfGorKSkBAAQEBAAAcnNzUVhYiAEDBmi3kcvliI+Px88//2z0dcrLy1FaWqpzI2qM+vo0zP/uhEP0eQjyVVh0O6LaeI6RI3LKxEcIgenTp+Pee+9FdHQ0AKCwsBAAEBwcrLNtcHCw9jFD5s+fD6VSqb2FhoZaL3ByefX1aRAAVv6Y6xB9HnpEBECtVMDYgGIZbtdC9YgIsHos5Jp4jpEjcsrEZ8qUKTh69Cg2btyo95hMpvsVE0LoldU0c+ZMlJSUaG/5+fkWj5eko74+DQBQV05jyz4P7m4ypCREAYDehUlzPyUhinOtUIPxHCNH5HSJzz/+8Q9888032LVrF1q2bKktV6lUAKBXu1NUVKRXC1STXC6Hn5+fzo2ooSzVV8FWfR4GRauRMTYWKqVuU4NKqUDG2FjOsUKNxnOMHI3TdG4WQuAf//gHvvrqK+zevRsRERE6j0dEREClUmHnzp3o2rUrAODWrVvYs2cP0tPT7REySZCl+irYss/DoGg1+kepOKsuWQ3PMXIkTpP4PP/889iwYQO+/vpr+Pr6amt2lEolvLy8IJPJkJycjHnz5qFt27Zo27Yt5s2bB29vb4wePdrO0ZNUaPo0FJaUGezHAwBuMkAIGHxchtv/Cdu6z4O7mwxxkc1suk+SFp5j5CicpqkrIyMDJSUl6N27N9Rqtfa2efNm7TYvv/wykpOTMXnyZHTv3h0XLlzAjh074Ovra8fISUrq69MgA5B0X4TRxwH2eSAisiaZEIJTZtZQWloKpVKJkpIS9vehBnOGeXzoNi6eSeQaTL1+M/GphYkPWUp9F1RecO2PCSiR67Ba4pOamoqnnnoKYWFhjQ7SETHxIZIGzUSTtX8ANaknRxwRORdTr99m9/HZunUrIiMj0a9fP2zYsAFlZZxqnMjW7L3Ol7Pj4plE0mV24nPo0CHk5OSgc+fOmDZtGtRqNSZNmoQDBw5YIz4iqiXzWAHuTc/CEyv34YVNR/DEyn24Nz3LZktduAIunkkkXQ0a1dW5c2e88847uHDhAlatWoULFy6gV69e6NSpE959913tOlpEZFn1rQPG5Mc0XDyTSLoaNZy9uroat27dQnl5OYQQCAgIQEZGBkJDQ3WGmRNR47F5xnK4eCaRdDUo8Tl06BCmTJkCtVqNadOmoWvXrjh58iT27NmD33//HSkpKZg6daqlYyWSNDbPWA4XzySSLrMTn86dO+Puu+9Gbm4uPvroI+Tn5+Ott95CmzZttNs8+eSTuHz5skUDJZI6Ns9YDhfPJJIus5esGDlyJCZMmIAWLVoY3aZ58+aorq5uVGBEpIvNM5alWTyz9jw+Kgefx4fzPxE1DicwrIXz+JCjqqoWuDc9y+g6YJp1vva+0pcXQjM4UyLBCReJjLPaPD5EZB+u0jzjaHMQaRbPHBbTAnGRzRz2+HFEH5FlOM3q7ETkvM0zGqyxaJj6RvTJcHtEX/8olcMmbkSOgokPkZMZFK1G/yiV0zTPaBhbIkJTY8ElIowzZ0RfXGQz2wVG5ISY+BA5IU3zjLNgjUXjcEQfkeWYlPgcPXrU5Bfs3Llzg4MhItfEGovG4Yg+IssxKfGJiYmBTCaDEAIyWd3/jVVVVVkkMCJyHayxaBzNhIv1jejjhItE9TNpVFdubi7Onj2L3NxcfPHFF4iIiMDSpUtx+PBhHD58GEuXLkVkZCS++OILa8dLRE6INRaN4yoj+ogcgUk1PmFhYdq/R44ciffeew8PPvigtqxz584IDQ3F7NmzMXz4cIsHSUTOjTUWjefsI/qIHIXZnZt/++03RERE6JVHRETgxIkTFgmKiFyLpsZi0vocyACd5MfUGgtnmmjQWpx1RB+RIzF75ubY2Fh07NgRH330ERSK29XS5eXlmDBhAk6ePImcnByrBGornLmZyHoaOo8P5/8hovqYev02O/HZv38/EhISUF1djS5dugAAfv31V8hkMmzbtg09evRoXOR2xsSHqPHqqp0xt+bG2Pw/mmdw/h8iAqyY+ADAzZs3sX79evz+++8QQiAqKgqjR4+Gj49Po4J2BEx8iBrHkrUzmvXJjA2F5/pkRKRh6vW7QRMYent7Y+LEiQ0Ojohck6VnZ+b8P0RkaQ1apPTjjz/Gvffei5CQEJw/fx4A8M477+Drr7+2aHBE5Dzqm50ZuD07szmLkkpt/h9HW8CVyBWZnfhkZGRg+vTpGDx4MK5evaqdsNDf3x+LFy+2dHxE5CTMqZ0xlZTm/8k8VoB707PwxMp9eGHTETyxch/uTc/iqutEFmZ24rNkyRKsXLkSs2bNQpMm/2sp6969O3777TeLBkdEzsMatTOa+X+M9d6R4Xb/IWef/0fTRFg7cdQ0ETL5IbIcsxOf3NxcdO3aVa9cLpfjxo0bFgmKiJyPNWpnpDBjsTWaCInIOLMTn4iICBw5ckSvfPv27YiKirJETERkQbbqN2Kt2hnNjMUqpW7CpFIqXGIouzWaCMn62B/LeZk9quuf//wnnn/+eZSVlUEIgf3792Pjxo2YP38+PvzwQ2vESEQNZMuJ/ywxO7MxrjxjsdQ6cLsCW36vOGO55TVoHp+VK1fizTffRH5+PgCgRYsWSE1NxdNPP23xAG2N8/iQq7DXxH+cZdk82Weu4ImV++rdbmPS3Ryy7wBs+b3id8k8Vp3AUOOvv/5CdXU1goKCGvoSDoeJD7kCe0/8x/9STaf5rOpbwJWTNNqfLb9XnLHcfKZev83u49O3b19cu3YNABAYGKhNekpLS9G3b9+GRUtEFmXvfiPubjLERTbDsJgWiItsxgt2HaTQgdtV2Op7xQ7v1mV24rN7927cunVLr7ysrAw//vijRYIiosZhv5H/sXcnVFP27+oduF2Frb5X9v7HxdWZ3Ln56NGj2r9PnDiBwsJC7f2qqipkZmaiRYsWlo2OiBpEShP/1cXefSTM2b8rd+B2Fbb6XvEfF+syOfGJiYmBTCaDTCYz2KTl5eWFJUuWWDQ4ImoYzdDy+vqNOPvEf3Wx9Lphtti/pomQHJOtvlf8x8W6TG7qys3NxZkzZ7RD2HNzc7W3CxcuoLS0FBMmTLBmrERkIqn3G7F3Hwl775+sw1bfK6nMWG4vJic+YWFhCA8PR3V1Nbp3746wsDDtTa1Ww93d3ZpxEpGZpNxvxN59JOy9f7IeW3yvpP6Pi7WZPYHh/PnzERwcrFe7s2rVKly+fBmvvPKKxYIjosaRar8Re/eRsPf+ybps8b3SJFi1+4ipOI9Po5md+CxfvhwbNmzQK7/zzjsxatQoJj7k1Fxx/hkp9huxdx8Je++frM8W3yup/uNibWYnPoWFhVCr9TPN5s2bo6CAKwiT87L3CCBrcMVEzhT27txt7/2T65DiPy7WZvY8PqGhofjpp5/0yn/66SeEhIRYJCgiW9OMwKndL0MzAifzmPMl9ZnHCnBvehaeWLkPL2w6gidW7sO96VlO+V7MZe8+EvbePxEZZ3bi88wzzyA5ORmrV6/G+fPncf78eaxatQrTpk1DUlKSNWIksipXHIHjiomcuezdudve+yciw8xu6nr55ZdRXFyMyZMna2dwVigUeOWVVzBz5kyLB0hkbeaMwHGGKuf6EjkZbidy/aNULl/jYO8+EvbePxHpMzvxkclkSE9Px+zZs3Hy5El4eXmhbdu2kMvl1oiPyOpcbQSOqyVyjWXvPhL23r+tSbVfGTkPsxMfjaZNm+Kuu+6yZCxEduFqI3BcLZEj5+GKAwTI9ZiU+DzyyCNYs2YN/Pz88Mgjj9S57ZdffmmRwIhsxdVG4LhaIkfOwd5LhBCZyqTOzUqlEjKZTPt3XTdHsHTpUkREREChUKBbt25cNZ7q5GojcDjdvWH2XqXdlbniAAFyXTIhhEudiZs3b8a4ceOwdOlS9OrVC8uXL8eHH36IEydOoFWrVvU+v7S0FEqlEiUlJfDz87NBxOQoXKmaXvPfNwCdi5EmGZLaf9+u9Nk6ouwzV/DEyn31brcx6W5J9Xci2zL1+u1yiU/Pnj0RGxuLjIwMbVnHjh0xfPhwzJ8/v97nM/GRNlfqmMmL/W3GmmCkmgRaw9dHLuCFTUfq3e7dUTEYFtPC+gGRJJl6/Tapj0/Xrl21TV31ycnJMS1CK7h16xYOHTqEGTNm6JQPGDAAP//8s8HnlJeXo7y8XHu/tLTUqjGSY3OlETgcSm3bof2ulDSbi/3KyJmYlPgMHz5c+3dZWRmWLl2KqKgoxMXFAQD27duH48ePY/LkyVYJ0lR//fUXqqqqEBwcrFMeHByMwsJCg8+ZP38+0tLSbBEekc25UiLXELYa2i/12jVXGyBArs2kxCclJUX79zPPPIOpU6fijTfe0NsmPz/fstE1UO3aKSGE0RqrmTNnYvr06dr7paWlCA0NtWp8RGQbthjaz9FM/xsgMGl9DmQw3K/MmQYIkGsze8mKzz77DE8++aRe+dixY/HFF19YJKiGCgwMhLu7u17tTlFRkV4tkIZcLoefn5/OjYhcg7WbYDia6X+4RAc5C7MnMPTy8sLevXvRtm1bnfK9e/dCobBv+62npye6deuGnTt34uGHH9aW79y5E8OGDbNjZERkD9ZuguEs2brYr4ycgdmJT3JyMiZNmoRDhw7h7rvvBnC7j8+qVavw+uuvWzxAc02fPh3jxo1D9+7dERcXhxUrViAvLw/PPfecvUMjIhuzdhMMZ8nWJ/V+ZeT4zE58ZsyYgdatW+Pdd9/Fhg0bANweLr5mzRo89thjFg/QXI8//jiuXLmCOXPmoKCgANHR0fjuu+8QFhZm79CIyA40TTC1Ox+rLND52NQmsr+ul6OqWrDmg8gBuNw8Po3FeXyIXJM1hptXVQvcm55ltCmtJimN8iKyB1Ov32Z3bgaAa9eu4cMPP8Srr76K4uJiALfn77lw4ULDoiUisjJNE8ywmBaIi2xmkdqXupY7qU0zyivzWEGj90tEDWd24nP06FG0a9cO6enpWLhwIa5duwYA+OqrrzBz5kxLx0dEZDHWWK/L2Gim2qQwyovroZEzMLuPz/Tp05GYmIgFCxbA19dXWz548GCMHj3aosEREVmKNScZ1IxmWvNTLt749qTR7ew9ysuas0tLfRJHch5mJz4HDhzA8uXL9cpbtGhhdHZkImo8KS+J0FiNmWTQ1OPu7iZDoK/cpHjsMcrLmokJJ3EkZ2J24qNQKAyuZ3Xq1Ck0b97cIkERkS7+N91wjVmvy9zj7qhrVlkzMbHFemhM+smSzO7jM2zYMMyZMwcVFRUAbi8PkZeXhxkzZmDEiBEWD5BI6jQXrdoT5bGzrGnMmWSwpoYcd82EicYuyTLcTpxsuWaVtWeXbujxNVXmsQLcm56FJ1buwwubjuCJlftwb3oWz3tqMLMTn7fffhuXL19GUFAQ/v77b8THx6NNmzbw9fXF3LlzrREjkWRxSYTGa8gkgw097nWN8rLXmlXWTkysOYkjk36yBrObuvz8/LB3715kZWUhJycH1dXViI2NxQMPPGCN+IgkjUsiNF5Dmp8ac9ytOWFiQ1h7dmlrNe/ZogmNpMmsxKeyshIKhQJHjhxB37590bdvX2vFRUTgkgiW0JD1uhp73B1pzSpr9zuy1npoTPrJWsxq6mrSpAnCwsJQVVVlrXiIqAZH7SzrTBrS/GSJ426NCRMbwtr9jqzVvMekn6zF7D4+r732GmbOnKmdsZmIrMcRO8s6I2OTDKqUCoMjmlzpuNui35G5x9cUTPrJWsxeq6tr1644ffo0KioqEBYWBh8fH53Hc3JyLBqgrXGtLnI0mg6egOHVxTlHiunMGRbtasfdFlMiWHLYeX3roGma0Pa+0pd9fAiA6ddvsxOf1NRUyGTGT7KUlBRzXs7hMPEhR8R5fOzD1Y67s82H42rJJ1mX1RIfV8fEhxyVs120XAWPu325WvJJ1mPxxOfmzZv45z//iS1btqCiogIPPPAA3nvvPQQGBlosaEfAxIeIyLEw+SRTmHr9Nnk4e0pKCtasWYMxY8ZAoVBg48aNmDRpEj777DOLBExERGSIZoQckSWYnPh8+eWX+OijjzBq1CgAwNixY9GrVy9UVVXB3d3dagESERERWYrJw9nz8/Nx3333ae/36NEDTZo0wcWLF60SGBERGVdVLZB95gq+PnIB2WeucNkSIhOZXONTVVUFT09P3Sc3aYLKykqLB0VERMaxwy9Rw5mc+AghkJiYCLlcri0rKyvDc889pzOXz5dffmnZCImISEszxLt2/Y5m4U4O8Saqm8mJz/jx4/XKxo4da9FgiIjIOC7cSdR4Jic+q1evtmYcRERUD1st3Mnh4+TKzFqdnYiI7McWC3ey/xC5OrMXKSUiIvuw9sKdmv5DtWuVNP2HMo8VNOh1iRwJEx8iIidhzVXj6+s/BNzuP8Rh8+TsmPgQETkJdzcZUhKiAEAv+dHcT0mIalB/HHP6DxE5MyY+REROZFC0GhljY6FS6jZnqZSKRg1lt0X/ISJHwM7NREROZlC0Gv2jVBYdeWXt/kNEjoKJDxE5JA6prpulF+7U9B8qLCkz2M9Hhtu1Sg3pP0TkSJj4EJHNmJrMcEi17Wn6D01anwMZoJP8NLb/EJEjkQkh2EW/htLSUiiVSpSUlMDPz8/e4RC5DFOTGWNLMmgut1ySwbqYdJKzMvX6zcSnFiY+RJZnajJTVS1wb3qW0dFFmuaWva/0Zc2DFbGZkZyRqddvNnURkVWZs76UJZZk4EW78Szdf4jIkTDxISKrMieZaeyQajbTEFF9OI8PEVmVOclMY4ZUc7kFIjIFEx8isipzkpmGLsnA5RaIyFRMfIjIqsxJZhq6JAOXWyAiUzHxISKrMjeZaciSDFxugYhMxc7NRGR1mmSmdsdjlZGOx+YuycDlFojIVEx8iMgmzE1mzBlSbY/lFjhsnsg5MfEhcmLOdvG11vwwtl5ugcPmiZwXZ26uhTM3k7PgxVefLY4Jl9QgckxcsqKBmPhIlzPVnvDia5w1P0cuqUHkuLhkBZEZnKn2xJwlIKR48bXmcguWWFKDiOyLw9lJ8pxtxl/OWWM/HDZP5PyY+JCkOeOMv7z42g+HzRM5P6dIfM6dO4enn34aERER8PLyQmRkJFJSUnDr1i2d7fLy8pCQkAAfHx8EBgZi6tSpetsQ1eSMtSe8+NpPQ5fUICLH4RR9fH7//XdUV1dj+fLlaNOmDY4dO4akpCTcuHEDb7/9NgCgqqoKQ4YMQfPmzbF3715cuXIF48ePhxACS5YssfM7IEfljLUn9pizxhhn6hBuCbYeNk9Elue0o7oWLlyIjIwMnD17FgCwfft2DB06FPn5+QgJCQEAbNq0CYmJiSgqKjJ5hBZHdUlL9pkreGLlvnq325h0t0N1VtX0SwIMX3xtMarLmTqEW5qU3zuRo3L5UV0lJSUICPjff7TZ2dmIjo7WJj0AMHDgQJSXl+PQoUPo06ePwdcpLy9HeXm59n5paan1giaH40i1J+YwdwkISzM2nF7TIdzVh9ObOws1ETkOp0x8zpw5gyVLluBf//qXtqywsBDBwcE62/n7+8PT0xOFhYVGX2v+/PlIS0uzWqzk2Jy56cJeF19LDKd3hSYyaw6bJyLrsWvn5tTUVMhksjpvBw8e1HnOxYsXMWjQIIwcORLPPPOMzmMymf4PpxDCYLnGzJkzUVJSor3l5+db5s2R02jIauCOQnPxHRbTAnGRzWySPDS2Q3jmsQLcm56FJ1buwwubjuCJlftwb3qWw00bQESuya41PlOmTMGoUaPq3CY8PFz798WLF9GnTx/ExcVhxYoVOtupVCr88ssvOmVXr15FRUWFXk1QTXK5HHK53PzgyaWw6cJ0jekQLvUmMiKyP7smPoGBgQgMDDRp2wsXLqBPnz7o1q0bVq9eDTc33cqquLg4zJ07FwUFBVCrb/9w7tixA3K5HN26dbN47OR62HRhmoYOp+eM00TkCJxiHp+LFy+id+/eCA0Nxdtvv43Lly+jsLBQp+/OgAEDEBUVhXHjxuHw4cP44Ycf8NJLLyEpKYmjs4gsqKFz2TjjnElE5HqcIvHZsWMHTp8+jaysLLRs2RJqtVp703B3d8e3334LhUKBXr164bHHHsPw4cO18/wQkWVoOoQD0Et+6uoQ7oxzJhGR63HaeXyshfP4EJnG3LlsGjpnkiuMACPL4LlAdXH5eXyIyL7M7RDekDmTOFEgafBcIEtxiqYuInJM5gynN7eJTDMCrHa/IM0IMA5/lw6eC2RJTHyIyGZMnTOpvhFgwO0RYFXVbKl3dTwXyNLY1EVENmVKE5k5I8A4BYFr47lAlsbEh4hsrr45kzgCjDR4LpClsamLiBxOQydJJNfDc4EsjYkPETmchk6SSK6H5wJZGhMfInI4DZ0kkVwPzwWyNCY+ROSQTB0BRq6P5wJZEmduroUzNxM5Fs7WSxo8F6gunLmZiFxCfSPASDp4LpAlsKmLiIiIJIOJDxEREUkGEx8iIiKSDCY+REREJBns3ExERNRIHHHmPJj4EBERNULmsQKkbT2hs5iqWqlASkIU5xhyQGzqIiIiaqDMYwWYtD5HbwX5wpIyTFqfg8xjBXaKjIxh4kNERNQAVdUCaVtPwNAswJqytK0nUFXNeYIdCRMfIiKiBtifW6xX01OTAFBQUob9ucW2C8qBVVULZJ+5gq+PXED2mSt2SwjZx4eIiKgBiq4bT3oasp2rqqoWeD/rT6z+6Ryu/V2hLbdXPyjW+BARETVAkK+i/o3M2M4VZR4rQLc3d+Kd7//USXoA+/WDYuJDRETUAD0iAqBWKmBs0LoMt2s1ekQE2DIsh6Hp+H3tZoXBx+3VD4qJDxERUQO4u8mQkhAFAHrJj+Z+SkKUJOfzqavjd0326AfFxIeIiKiBBkWrkTE2FiqlbnOWSqlAxthYyc7jU1/H79ps2Q+KnZuJiIgaYVC0Gv2jVJy5uQZzExlb9oNi4kNERNRI7m4yxEU2s3cYDsOcRMbW/aDY1EVEREQWVV/H75ps3Q+KiQ8RERFZVF0dvzXu8PbAMjv0g2LiQ0RERBZnrOP3Hd4emPZAOxx6rb9dOn+zjw8RERFZhSN2/GbiQ0RERFbjaB2/2dRFREREksHEh4iIiCSDiQ8RERFJBhMfIiIikgwmPkRERCQZTHyIiIhIMpj4EBERkWQw8SEiIiLJYOJDREREksGZm4nIaVVVC4eaCp+IHB8THyJySpnHCpC29QQKSsq0ZWqlAikJUXZZ+JCInAObuojI6WQeK8Ck9Tk6SQ8AFJaUYdL6HGQeK7BTZETk6Jj4EJFTqaoWSNt6AsLAY5qytK0nUFVtaAsikjomPkTkVPbnFuvV9NQkABSUlGF/brHtgiIip+F0iU95eTliYmIgk8lw5MgRncfy8vKQkJAAHx8fBAYGYurUqbh165Z9AiUiqyi6bjzpach2RCQtTte5+eWXX0ZISAh+/fVXnfKqqioMGTIEzZs3x969e3HlyhWMHz8eQggsWbLETtESkaUF+Sosuh0RSYtT1fhs374dO3bswNtvv6332I4dO3DixAmsX78eXbt2xQMPPIB//etfWLlyJUpLS+0QLRFZQ4+IAKiVChgbtC7D7dFdPSICbBkWETkJp0l8Ll26hKSkJHz88cfw9vbWezw7OxvR0dEICQnRlg0cOBDl5eU4dOiQ0dctLy9HaWmpzo2IHJe7mwwpCVEAoJf8aO6nJERxPh8iMsgpEh8hBBITE/Hcc8+he/fuBrcpLCxEcHCwTpm/vz88PT1RWFho9LXnz58PpVKpvYWGhlo0diKyvEHRamSMjYVKqducpVIqkDE2lvP4EJFRdu3jk5qairS0tDq3OXDgAH7++WeUlpZi5syZdW4rk+n/hyeEMFiuMXPmTEyfPl17v7S0lMkPkRMYFK1G/ygVZ24mIrPYNfGZMmUKRo0aVec24eHhePPNN7Fv3z7I5XKdx7p3744xY8Zg7dq1UKlU+OWXX3Qev3r1KioqKvRqgmqSy+V6r2tpnFafyDrc3WSIi2xm7zCIyInIhBAOP8tXXl6eTt+bixcvYuDAgfj888/Rs2dPtGzZEtu3b8fQoUPxn//8B2r17WruzZs3Y/z48SgqKoKfn59J+yotLYVSqURJSYnJz6kLp9UnIiKyPlOv306R+NR27tw5RERE4PDhw4iJiQFwezh7TEwMgoODsXDhQhQXFyMxMRHDhw83azi7JRMfzbT6tQ+wpq6HfRGIiIgsw9Trt1N0bjaFu7s7vv32WygUCvTq1QuPPfYYhg8fbnDouy1wWn0iIiLH43QTGAK3+/0Yqqhq1aoVtm3bZoeI9JkzrT77KBAREdmGy9T4OBpOq09EROR4mPhYCafVJyIicjxMfKyE0+oTERE5HiY+VsJp9YmIiBwPEx8r4rT6REREjsUpR3U5E06rT0RE5DiY+NgAp9UnIiJyDGzqIiIiIslg4kNERESSwcSHiIiIJIOJDxEREUkGEx8iIiKSDCY+REREJBlMfIiIiEgymPgQERGRZDDxISIiIslg4kNERESSwcSHiIiIJIOJDxEREUkGEx8iIiKSDCY+REREJBlMfIiIiEgymPgQERGRZDDxISIiIslg4kNERESSwcSHiIiIJIOJDxEREUkGEx8iIiKSDCY+REREJBlMfIiIiEgymPgQERGRZDSxdwBERERkWVXVAvtzi1F0vQxBvgr0iAiAu5vM3mE5BCY+RERELiTzWAHStp5AQUmZtkytVCAlIQqDotV2jMwxsKmLiIjIRWQeK8Ck9Tk6SQ8AFJaUYdL6HGQeK7BTZI6DiQ8REZELqKoWSNt6AsLAY5qytK0nUFVtaAvpYOJDRETkAvbnFuvV9NQkABSUlGF/brHtgnJATHyIiIhcQNF140lPQ7ZzVUx8iIiIXECQr8Ki27kqJj5EREQuoEdEANRKBYwNWpfh9uiuHhEBtgzL4TDxISIicgHubjKkJEQBgF7yo7mfkhAl+fl8mPgQERG5iEHRamSMjYVKqducpVIqkDE2lvP4gBMYEhERuZRB0Wr0j1Jx5mYjmPgQERG5GHc3GeIim9k7DIfEpi4iIiKSDCY+REREJBlMfIiIiEgynCrx+fbbb9GzZ094eXkhMDAQjzzyiM7jeXl5SEhIgI+PDwIDAzF16lTcunXLTtESERGRo3Gazs1ffPEFkpKSMG/ePPTt2xdCCPz222/ax6uqqjBkyBA0b94ce/fuxZUrVzB+/HgIIbBkyRI7Rk5ERESOQiaEcPhlWisrKxEeHo60tDQ8/fTTBrfZvn07hg4divz8fISEhAAANm3ahMTERBQVFcHPz8+kfZWWlkKpVKKkpMTk5xAREZF9mXr9doqmrpycHFy4cAFubm7o2rUr1Go1Bg8ejOPHj2u3yc7ORnR0tDbpAYCBAweivLwchw4dMvra5eXlKC0t1bkRERGRa3KKxOfs2bMAgNTUVLz22mvYtm0b/P39ER8fj+LiYgBAYWEhgoODdZ7n7+8PT09PFBYWGn3t+fPnQ6lUam+hoaHWeyNERERkV3ZNfFJTUyGTyeq8HTx4ENXV1QCAWbNmYcSIEejWrRtWr14NmUyGzz77TPt6Mpn+rJRCCIPlGjNnzkRJSYn2lp+fb/k3SkRERA7Brp2bp0yZglGjRtW5TXh4OK5fvw4AiIqK0pbL5XK0bt0aeXl5AACVSoVffvlF57lXr15FRUWFXk1QTXK5HHK5XHtf0+WJTV5ERETOQ3Pdrq/rsl0Tn8DAQAQGBta7Xbdu3SCXy3Hq1Cnce++9AICKigqcO3cOYWFhAIC4uDjMnTsXBQUFUKtvL8K2Y8cOyOVydOvWzeSYNEkWm7yIiIicz/Xr16FUKo0+7hSjugAgOTkZn3/+OVatWoWwsDAsXLgQW7duxe+//w5/f39UVVUhJiYGwcHBWLhwIYqLi5GYmIjhw4ebNZy9uroaFy9ehK+vb51NZA1RWlqK0NBQ5Ofnc8SYATw+9eMxqh+PUd14fOrHY1Q/RzxGQghcv34dISEhcHMz3pPHaebxWbhwIZo0aYJx48bh77//Rs+ePZGVlQV/f38AgLu7O7799ltMnjwZvXr1gpeXF0aPHo23337brP24ubmhZcuW1ngLWn5+fg5zojgiHp/68RjVj8eobjw+9eMxqp+jHaO6ano0nCbx8fDwwNtvv11nItOqVSts27bNhlERERGRM3GK4exERERElsDEx4bkcjlSUlJ0RpHR//D41I/HqH48RnXj8akfj1H9nPkYOU3nZiIiIqLGYo0PERERSQYTHyIiIpIMJj5EREQkGUx8iIiISDKY+NjI3Llzcc8998Db2xt33HGHwW0MLdK6bNky2wZqJ6Ycn7y8PCQkJMDHxweBgYGYOnUqbt26ZdtAHUh4eLje+TJjxgx7h2VXS5cuRUREBBQKBbp164Yff/zR3iE5DEOLQqtUKnuHZVf//ve/kZCQgJCQEMhkMmzZskXncSEEUlNTERISAi8vL/Tu3RvHjx+3T7B2UN/xSUxM1Dun7r77bvsEawYmPjZy69YtjBw5EpMmTapzu9WrV6OgoEB7Gz9+vI0itK/6jk9VVRWGDBmCGzduYO/evdi0aRO++OILvPjiizaO1LHMmTNH53x57bXX7B2S3WzevBnJycmYNWsWDh8+jPvuuw+DBw/WLmRMwJ133qlzvvz222/2Dsmubty4gS5duuD99983+PiCBQuwaNEivP/++zhw4ABUKhX69++vXdPR1dV3fABg0KBBOufUd999Z8MIG0iQTa1evVoolUqDjwEQX331lU3jcTTGjs93330n3NzcxIULF7RlGzduFHK5XJSUlNgwQscRFhYm3nnnHXuH4TB69OghnnvuOZ2yDh06iBkzZtgpIseSkpIiunTpYu8wHFbt39/q6mqhUqnEW2+9pS0rKysTSqVSLFu2zA4R2peh69P48ePFsGHD7BJPY7DGx8FMmTIFgYGBuOuuu7Bs2TJUV1fbOySHkJ2djejoaISEhGjLBg4ciPLychw6dMiOkdlXeno6mjVrhpiYGMydO1eyTX+3bt3CoUOHMGDAAJ3yAQMG4Oeff7ZTVI7nzz//REhICCIiIjBq1CicPXvW3iE5rNzcXBQWFuqcU3K5HPHx8Tynati9ezeCgoLQrl07JCUloaioyN4h1ctp1uqSgjfeeAP9+vWDl5cXfvjhB7z44ov466+/JN18oVFYWIjg4GCdMn9/f3h6eqKwsNBOUdnXCy+8gNjYWPj7+2P//v2YOXMmcnNz8eGHH9o7NJv766+/UFVVpXeOBAcHS/b8qK1nz55Yt24d2rVrh0uXLuHNN9/EPffcg+PHj6NZs2b2Ds/haM4bQ+fU+fPn7RGSwxk8eDBGjhyJsLAw5ObmYvbs2ejbty8OHTrk0DM6s8anEQx1Fqx9O3jwoMmv99prryEuLg4xMTF48cUXMWfOHCxcuNCK78C6LH18ZDKZXpkQwmC5szLnmE2bNg3x8fHo3LkznnnmGSxbtgwfffQRrly5Yud3YT+1zwVXOz8aY/DgwRgxYgQ6deqEBx54AN9++y0AYO3atXaOzLHxnDLu8ccfx5AhQxAdHY2EhARs374df/zxh/bcclSs8WmEKVOmYNSoUXVuEx4e3uDXv/vuu1FaWopLly7p/dfhDCx5fFQqFX755RedsqtXr6KiosIpj40xjTlmmtEUp0+fltx/8IGBgXB3d9er3SkqKnKp88OSfHx80KlTJ/z555/2DsUhaUa8FRYWQq1Wa8t5ThmnVqsRFhbm8OcUE59GCAwMRGBgoNVe//Dhw1AoFEaHdzs6Sx6fuLg4zJ07FwUFBdofoR07dkAul6Nbt24W2YcjaMwxO3z4MADo/EhLhaenJ7p164adO3fi4Ycf1pbv3LkTw4YNs2Nkjqu8vBwnT57EfffdZ+9QHFJERARUKhV27tyJrl27Arjdl2zPnj1IT0+3c3SO6cqVK8jPz3f43yAmPjaSl5eH4uJi5OXloaqqCkeOHAEAtGnTBk2bNsXWrVtRWFiIuLg4eHl5YdeuXZg1axYmTpzo0G2lllLf8RkwYACioqIwbtw4LFy4EMXFxXjppZeQlJQEPz8/+wZvB9nZ2di3bx/69OkDpVKJAwcOYNq0aXjooYfQqlUre4dnF9OnT8e4cePQvXt3xMXFYcWKFcjLy8Nzzz1n79AcwksvvYSEhAS0atUKRUVFePPNN1FaWiqZKTMM+e9//4vTp09r7+fm5uLIkSMICAhAq1atkJycjHnz5qFt27Zo27Yt5s2bB29vb4wePdqOUdtOXccnICAAqampGDFiBNRqNc6dO4dXX30VgYGBOv98OCQ7jyqTjPHjxwsAerddu3YJIYTYvn27iImJEU2bNhXe3t4iOjpaLF68WFRUVNg3cBup7/gIIcT58+fFkCFDhJeXlwgICBBTpkwRZWVl9gvajg4dOiR69uwplEqlUCgUon379iIlJUXcuHHD3qHZ1QcffCDCwsKEp6eniI2NFXv27LF3SA7j8ccfF2q1Wnh4eIiQkBDxyCOPiOPHj9s7LLvatWuXwd+d8ePHCyFuD2lPSUkRKpVKyOVycf/994vffvvNvkHbUF3H5+bNm2LAgAGiefPmwsPDQ7Rq1UqMHz9e5OXl2TvsesmEEMK2qRYRERGRfXBUFxEREUkGEx8iIiKSDCY+REREJBlMfIiIiEgymPgQERGRZDDxISIiIslg4kNERESSwcSHiIiIJIOJDxE5rPpWqk9MTLR3iETkZLhWFxE5rIKCAu3fmzdvxuuvv45Tp05py7y8vHS2r6iogIeHh83iIyLnwxofInJYKpVKe1MqlZDJZNr7ZWVluOOOO/Dpp5+id+/eUCgUWL9+PVJTUxETE6PzOosXL0Z4eLhO2erVq9GxY0coFAp06NABS5cuNRrHunXr0KxZM5SXl+uUjxgxAk8++aSl3i4R2QATHyJyaq+88gqmTp2KkydPYuDAgSY9Z+XKlZg1axbmzp2LkydPYt68eZg9ezbWrl1rcPuRI0eiqqoK33zzjbbsr7/+wrZt2/DUU09Z5H0QkW2wqYuInFpycjIeeeQRs57zxhtv4F//+pf2eREREThx4gSWL1+O8ePH623v5eWF0aNHY/Xq1Rg5ciQA4JNPPkHLli3Ru3fvRr8HIrIdJj5E5NS6d+9u1vaXL19Gfn4+nn76aSQlJWnLKysroVQqjT4vKSkJd911Fy5cuIAWLVpg9erVSExMhEwma3DsRGR7THyIyKn5+Pjo3Hdzc4MQQqesoqJC+3d1dTWA281dPXv21NnO3d3d6H66du2KLl26YN26dRg4cCB+++03bN26tbHhE5GNMfEhIpfSvHlzFBYWQgihrY05cuSI9vHg4GC0aNECZ8+exZgxY8x67WeeeQbvvPMOLly4gAceeAChoaGWDJ2IbICJDxG5lN69e+Py5ctYsGABHn30UWRmZmL79u3w8/PTbpOamoqpU6fCz88PgwcPRnl5OQ4ePIirV69i+vTpRl97zJgxeOmll7By5UqsW7fOFm+HiCyMo7qIyKV07NgRS5cuxQcffIAuXbpg//79eOmll3S2eeaZZ/Dhhx9izZo16NSpE+Lj47FmzRpERETU+dp+fn4YMWIEmjZtiuHDh1vxXRCRtchE7cZwIiIyqn///ujYsSPee+89e4dCRA3AxIeIyATFxcXYsWMHxowZgxMnTqB9+/b2DomIGoB9fIiITBAbG4urV68iPT2dSQ+RE2ONDxEREUkGOzcTERGRZDDxISIiIslg4kNERESSwcSHiIiIJIOJDxEREUkGEx8iIiKSDCY+REREJBlMfIiIiEgymPgQERGRZPw//acHKffH3bUAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# shuffled data\n", "\n", "y_shuf = y.copy()\n", "np.random.seed(1)\n", "np.random.shuffle(y_shuf)\n", "\n", "lr = LinearRegression()\n", "lr.fit(X, y_shuf)\n", "y_pred = lr.predict(X)\n", "\n", "print(f'R2 (in-sample): {r2_score(y_shuf, y_pred):.03}')\n", "print(f'correlation (in-sample): {np.corrcoef(y_shuf, y_pred)[0, 1]:.03}')\n", "\n", "\n", "clf = LinearRegression\n", "kf = KFold(n_splits=8)\n", "pred_y = np.zeros_like(y)\n", "\n", "\n", "\n", "for split_idx, (train_idx, test_idx) in enumerate(kf.split(X)):\n", " train_X = X[train_idx, :]\n", " train_y = y_shuf[train_idx]\n", " test_X = X[test_idx, :]\n", " test_y = y_shuf[test_idx]\n", "\n", " # fit the model\n", " if clf is None:\n", " clf = RidgeCV\n", " model = clf()\n", " model.fit(train_X, train_y)\n", " pred_y[test_idx] = model.predict(test_X)\n", "\n", "print(f'R2 (out-of-sample): {r2_score(y_shuf, pred_y):.03f}')\n", "print(f'correlation (out-of-sample): {np.corrcoef(y_shuf, pred_y)[0, 1]:.03f}')\n", "\n", "print('')\n", "print(f'R2 (mean prediction): {r2_score(y_shuf, np.mean(y_shuf) * np.ones_like(y_shuf)):.03f}')\n", "\n", "\n", "print(f'R2 ({r2_score(y_shuf, pred_y)}) is not equal to r^2 ({np.corrcoef(y_shuf, pred_y)[0, 1]**2})')\n", "plt.plot(y, pred_y, 'o')\n", "plt.xlabel('True y')\n", "plt.ylabel('Predicted y')\n", "plt.title('Linear regression (shuffled y)- out of sample prediction')\n" ] }, { "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.12.4" } }, "nbformat": 4, "nbformat_minor": 2 }