diff --git a/baseline.ipynb b/baseline.ipynb new file mode 100644 index 0000000..c587ffc --- /dev/null +++ b/baseline.ipynb @@ -0,0 +1,2846 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data cleanup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "player_count_check = pd.read_csv('G:/datasets/csgo/match-map-unique/train/match-58-de_inferno-17-687.csv')\n", + "player_count = player_count_check['SteamId'].nunique()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "player_count" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from csgo_wp.data_transform import CSGODataset, transform_data" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Transforming raw data...\n" + ] + }, + { + "ename": "ValueError", + "evalue": "only one element tensors can be converted to Python scalars", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mwarnings\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfilterwarnings\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'ignore'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mdataset\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mCSGODataset\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtransform\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtransform_data\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32mg:\\git\\csgo-win-probability\\csgo_wp\\data_transform.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, folder, transform, dataset_split, rng_seed)\u001b[0m\n\u001b[0;32m 243\u001b[0m target = self.rounds[(self.rounds['MatchId'] == match_id)\n\u001b[0;32m 244\u001b[0m \u001b[1;33m&\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrounds\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'MapName'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m==\u001b[0m \u001b[0mmap_name\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 245\u001b[1;33m & (self.rounds['RoundNum'] == round_num)]\n\u001b[0m\u001b[0;32m 246\u001b[0m \u001b[0mtarget\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m1\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mtarget\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'WinningSide'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0miloc\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'CT'\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 247\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtargets\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mextend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mtarget\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0m_\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtransformed\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mValueError\u001b[0m: only one element tensors can be converted to Python scalars" + ] + } + ], + "source": [ + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "dataset = CSGODataset(transform=transform_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with open('G:/datasets/csgo/train/data.pckl', 'wb') as f:\n", + " pickle.dump((dataset.data, dataset.targets), f)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "df = pd.read_csv('G:/datasets/csgo/match-map-unique/train/match-1071-de_dust2-1-278.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PlayerSteamId
MatchId
107110
\n", + "
" + ], + "text/plain": [ + " PlayerSteamId\n", + "MatchId \n", + "1071 10" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.groupby(['MatchId']).agg({'PlayerSteamId': 'nunique'})" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PlayerSteamId
Tick
289
619
949
1279
1609
......
90399
90729
91059
91389
91719
\n", + "

278 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " PlayerSteamId\n", + "Tick \n", + "28 9\n", + "61 9\n", + "94 9\n", + "127 9\n", + "160 9\n", + "... ...\n", + "9039 9\n", + "9072 9\n", + "9105 9\n", + "9138 9\n", + "9171 9\n", + "\n", + "[278 rows x 1 columns]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.groupby(['Tick']).agg({'PlayerSteamId': 'nunique'})" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([4], dtype=int64)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grouped = df.groupby(['Tick', 'Side'], as_index=False).agg({'PlayerSteamId': 'nunique'})\n", + "grouped[grouped['Side'] == 'T']['PlayerSteamId'].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://steamcommunity.com/profiles/76561198047402862/\n", + "Showed up in 140 ticks\n", + "https://steamcommunity.com/profiles/76561197997981170/\n", + "Showed up in 278 ticks\n", + "https://steamcommunity.com/profiles/76561197994395491/\n", + "Showed up in 278 ticks\n", + "https://steamcommunity.com/profiles/76561197978321481/\n", + "Showed up in 278 ticks\n", + "https://steamcommunity.com/profiles/76561198012987839/\n", + "Showed up in 138 ticks\n" + ] + } + ], + "source": [ + "for x in df[df['Side'] == 'T']['PlayerSteamId'].unique():\n", + " print(f'https://steamcommunity.com/profiles/{x}/')\n", + " print(f\"Showed up in {df[df['PlayerSteamId'] == x]['Tick'].nunique()} ticks\")" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2502" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.shape[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2502" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "278*9" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "g:\\git\\csgo-win-probability\\csgo_wp\\data_transform.py:53: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df['pos'] = df[['X', 'Y', 'Z']].values.tolist()\n" + ] + }, + { + "data": { + "text/plain": [ + "(tensor([[ 1., 50., 51., 2., 43., 1., 8., 3., 38., 46.],\n", + " [36., 1., 2., 35., 8., 36., 39., 36., 8., 2.],\n", + " [37., 2., 1., 36., 9., 37., 40., 37., 9., 3.],\n", + " [ 2., 49., 50., 1., 42., 2., 7., 2., 37., 45.],\n", + " [30., 8., 9., 29., 1., 30., 32., 30., 4., 4.],\n", + " [ 1., 50., 51., 2., 43., 1., 8., 3., 38., 46.],\n", + " [24., 53., 54., 23., 46., 24., 1., 22., 41., 49.],\n", + " [ 3., 50., 51., 2., 43., 3., 8., 1., 38., 46.],\n", + " [29., 8., 9., 28., 4., 29., 31., 29., 1., 5.],\n", + " [32., 2., 3., 31., 4., 32., 35., 32., 5., 1.],\n", + " [ 1., 1., 1., 0., 1., 0., 1., 1., 1., 0.],\n", + " [ 1., 1., 1., 1., 1., 1., 1., 0., 1., 0.]]), tensor([1.]))" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "1 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "2 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "3 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "4 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "5 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "6 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "7 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "8 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "9 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "10 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "11 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "12 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "13 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "14 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "15 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "16 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "17 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "18 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "19 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "20 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "21 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "22 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "23 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "24 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "25 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "26 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "27 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "28 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "29 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "30 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "31 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "32 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "33 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "34 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "35 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "36 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "37 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "38 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "39 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "40 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "41 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "42 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "43 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "44 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "45 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "46 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "47 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "48 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "49 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "50 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "51 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "52 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "53 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "54 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "55 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "56 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "57 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "58 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "59 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "60 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "61 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "62 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "63 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "64 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "65 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "66 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "67 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "68 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "69 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "70 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "71 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "72 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "73 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "74 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "75 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "76 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "77 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "78 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "79 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "80 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "81 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "82 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "83 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "84 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "85 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "86 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "87 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "88 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "89 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "90 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "91 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "92 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "93 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "94 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "95 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "96 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "97 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "98 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "99 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "100 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "101 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "102 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "103 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "104 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "105 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "106 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "107 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "108 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "109 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "110 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "111 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "112 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "113 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "114 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "115 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "116 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "117 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "118 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "119 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "120 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "121 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "122 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "123 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "124 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "125 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "126 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "127 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "128 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "129 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "130 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "131 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "132 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "133 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "134 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "135 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "136 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "137 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "138 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "139 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "140 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "141 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "142 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "143 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "144 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "145 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "146 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "147 torch.Size([24, 12, 10]) torch.Size([24, 1])\n", + "148 torch.Size([24, 12, 10]) torch.Size([24, 1])\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 11\u001b[0m \u001b[0mstart\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 12\u001b[0m \u001b[1;31m# check if dataset acts as expected\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 13\u001b[1;33m \u001b[1;32mfor\u001b[0m \u001b[0mindex\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtarget\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mloader\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 14\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtarget\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0mstart\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mc:\\python37\\lib\\site-packages\\torch\\utils\\data\\dataloader.py\u001b[0m in \u001b[0;36m__next__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 361\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 362\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__next__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 363\u001b[1;33m \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_next_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 364\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_num_yielded\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 365\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_dataset_kind\u001b[0m \u001b[1;33m==\u001b[0m \u001b[0m_DatasetKind\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mIterable\u001b[0m \u001b[1;32mand\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m\\\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mc:\\python37\\lib\\site-packages\\torch\\utils\\data\\dataloader.py\u001b[0m in \u001b[0;36m_next_data\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 401\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_next_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 402\u001b[0m \u001b[0mindex\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_next_index\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m# may raise StopIteration\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 403\u001b[1;33m \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_dataset_fetcher\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfetch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m# may raise StopIteration\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 404\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_pin_memory\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 405\u001b[0m \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_utils\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpin_memory\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpin_memory\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mc:\\python37\\lib\\site-packages\\torch\\utils\\data\\_utils\\fetch.py\u001b[0m in \u001b[0;36mfetch\u001b[1;34m(self, possibly_batched_index)\u001b[0m\n\u001b[0;32m 42\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mfetch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpossibly_batched_index\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 43\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mauto_collation\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 44\u001b[1;33m \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdataset\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0midx\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0midx\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mpossibly_batched_index\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 45\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 46\u001b[0m \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdataset\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mpossibly_batched_index\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mc:\\python37\\lib\\site-packages\\torch\\utils\\data\\_utils\\fetch.py\u001b[0m in \u001b[0;36m\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 42\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mfetch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpossibly_batched_index\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 43\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mauto_collation\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 44\u001b[1;33m \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdataset\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0midx\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0midx\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mpossibly_batched_index\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 45\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 46\u001b[0m \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdataset\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mpossibly_batched_index\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mg:\\git\\csgo-win-probability\\csgo_wp\\data_transform.py\u001b[0m in \u001b[0;36m__getitem__\u001b[1;34m(self, sample_idx)\u001b[0m\n\u001b[0;32m 224\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0midx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmatchup\u001b[0m \u001b[1;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmatchups\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 225\u001b[0m \u001b[0mtick_count\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmatchup\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstem\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'-'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m# last component\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 226\u001b[1;33m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 227\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mn_samples\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mn_samples\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mtick_count\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 228\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmatchup_idx_by_sample_idx\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0midx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mn_samples\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mg:\\git\\csgo-win-probability\\csgo_wp\\data_transform.py\u001b[0m in \u001b[0;36mtransform_data\u001b[1;34m(df, game_map)\u001b[0m\n\u001b[0;32m 80\u001b[0m \u001b[1;31m# return torch.cat((t, t_2), dim=2).unsqueeze(1)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 81\u001b[0m \u001b[0mn_samples\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 82\u001b[1;33m result = torch.cat([t.reshape(n_samples, 100),\n\u001b[0m\u001b[0;32m 83\u001b[0m t_2.reshape(n_samples, 20)],\n\u001b[0;32m 84\u001b[0m dim=1).view(n_samples, 12, 10)\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "import torch\n", + "import time\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "loader = torch.utils.data.DataLoader(dataset,\n", + " batch_size=24,\n", + " shuffle=False,\n", + " num_workers=0,\n", + " )\n", + "start = time.time()\n", + "# check if dataset acts as expected\n", + "for index, (data, target) in enumerate(loader):\n", + " print(index, data.shape, target.shape)\n", + "print(time.time() - start)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# del dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "player_count_check = pd.read_csv('G:/datasets/csgo/match-map-unique/train/match-96-de_dust2-11-147.csv')\n", + "player_count = player_count_check['PlayerSteamId'].nunique()\n", + "player_count" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "tick_count_check = pd.read_csv('G:/datasets/csgo/csgo_playerframes_dust2.csv',\n", + " names=['MatchId',\n", + " 'MapName',\n", + " 'RoundNum',\n", + " 'Tick',\n", + " 'Second',\n", + " 'PlayerId',\n", + " 'PlayerSteamId',\n", + " 'TeamId',\n", + " 'Side',\n", + " 'X',\n", + " 'Y',\n", + " 'Z',\n", + " 'ViewX',\n", + " 'ViewY',\n", + " 'AreaId',\n", + " 'Hp',\n", + " 'Armor',\n", + " 'IsAlive',\n", + " 'IsFlashed',\n", + " 'IsAirborne',\n", + " 'IsDucking',\n", + " 'IsScoped',\n", + " 'IsWalking',\n", + " 'EqValue',\n", + " 'HasHelmet',\n", + " 'HasDefuse',\n", + " 'DistToBombsiteA',\n", + " 'DistToBombsiteB',\n", + " 'Created',\n", + " 'Updated'],\n", + " usecols=['MatchId', 'MapName', 'RoundNum', 'Tick', 'PlayerSteamId'])" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PlayerSteamId
MatchId
9610
\n", + "
" + ], + "text/plain": [ + " PlayerSteamId\n", + "MatchId \n", + "96 10" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tick_count_check[(tick_count_check['MatchId'] == 96)].groupby('MatchId').agg({'PlayerSteamId': 'nunique'})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Baseline" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RoundNum
WinningSide
CT0.474391
T0.525609
\n", + "
" + ], + "text/plain": [ + " RoundNum\n", + "WinningSide \n", + "CT 0.474391\n", + "T 0.525609" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ideas: map-based, player count based, logreg, peterx's stuff\n", + "import pandas as pd\n", + "\n", + "map_data = pd.read_csv('G:/datasets/csgo/csgo_rounds_dust2.csv', usecols=['RoundNum', 'WinningSide'])\n", + "map_baseline = map_data.groupby('WinningSide').agg({'RoundNum': 'count'})\n", + "map_baseline = map_baseline / map_baseline.sum(axis=0)\n", + "map_baseline" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.5\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "\n", + "print(roc_auc_score(map_data['WinningSide'] == 'CT', np.zeros(map_data.shape[0])))\n", + "del map_data" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MatchIdRoundNumSideTickIsAliveWinningSide
041CT1525751
141CT1529051
241CT1532351
341CT1535651
441CT1538951
.....................
2131902189222T30653011
2131903189222T30659611
2131904189222T30666211
2131905189222T30672811
2131906189222T30679411
\n", + "

2131907 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " MatchId RoundNum Side Tick IsAlive WinningSide\n", + "0 4 1 CT 15257 5 1\n", + "1 4 1 CT 15290 5 1\n", + "2 4 1 CT 15323 5 1\n", + "3 4 1 CT 15356 5 1\n", + "4 4 1 CT 15389 5 1\n", + "... ... ... ... ... ... ...\n", + "2131902 1892 22 T 306530 1 1\n", + "2131903 1892 22 T 306596 1 1\n", + "2131904 1892 22 T 306662 1 1\n", + "2131905 1892 22 T 306728 1 1\n", + "2131906 1892 22 T 306794 1 1\n", + "\n", + "[2131907 rows x 6 columns]" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# player count based\n", + "import pandas as pd\n", + "\n", + "player_data = pd.read_csv('G:/datasets/csgo/csgo_playerframes_dust2.csv',\n", + " names=['MatchId',\n", + " 'MapName',\n", + " 'RoundNum',\n", + " 'Tick',\n", + " 'Second',\n", + " 'PlayerId',\n", + " 'PlayerSteamId',\n", + " 'TeamId',\n", + " 'Side',\n", + " 'X',\n", + " 'Y',\n", + " 'Z',\n", + " 'ViewX',\n", + " 'ViewY',\n", + " 'AreaId',\n", + " 'Hp',\n", + " 'Armor',\n", + " 'IsAlive',\n", + " 'IsFlashed',\n", + " 'IsAirborne',\n", + " 'IsDucking',\n", + " 'IsScoped',\n", + " 'IsWalking',\n", + " 'EqValue',\n", + " 'HasHelmet',\n", + " 'HasDefuse',\n", + " 'DistToBombsiteA',\n", + " 'DistToBombsiteB',\n", + " 'Created',\n", + " 'Updated'],\n", + " usecols=['MatchId', 'RoundNum', 'Tick', 'Side', 'IsAlive'])\n", + "player_data['IsAlive'] = player_data['IsAlive'].astype(int)\n", + "results = pd.read_csv('G:/datasets/csgo/csgo_rounds_dust2.csv', usecols=['MatchId', 'RoundNum', 'WinningSide'])\n", + "player_data = pd.merge(player_data, results, on=['MatchId', 'RoundNum'])\n", + "del results\n", + "player_data['WinningSide'] = (player_data['WinningSide'] == 'CT').astype(int)\n", + "player_data = player_data.groupby(['MatchId',\n", + " 'RoundNum',\n", + " 'Side',\n", + " 'Tick',\n", + " ],\n", + " as_index=False).agg({'IsAlive': 'sum', 'WinningSide': 'max'})\n", + "player_data" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IsAliveWinner
SideCTT
MatchIdRoundNumTick
41152575.05.01
152905.05.01
153235.05.01
153565.05.01
153895.05.01
..................
1892223065303.01.01
3065963.01.01
3066623.01.01
3067283.01.01
3067943.01.01
\n", + "

1069034 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " IsAlive Winner\n", + "Side CT T \n", + "MatchId RoundNum Tick \n", + "4 1 15257 5.0 5.0 1\n", + " 15290 5.0 5.0 1\n", + " 15323 5.0 5.0 1\n", + " 15356 5.0 5.0 1\n", + " 15389 5.0 5.0 1\n", + "... ... ... ...\n", + "1892 22 306530 3.0 1.0 1\n", + " 306596 3.0 1.0 1\n", + " 306662 3.0 1.0 1\n", + " 306728 3.0 1.0 1\n", + " 306794 3.0 1.0 1\n", + "\n", + "[1069034 rows x 3 columns]" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pivoted = player_data.pivot_table(index=['MatchId', 'RoundNum', 'Tick'], values=['IsAlive'], columns=['Side'])\n", + "pivoted['Winner'] = player_data.groupby(['MatchId', 'RoundNum', 'Tick']).agg({'WinningSide': 'max'})['WinningSide']\n", + "pivoted" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Int64Index([ 4, 15, 21, 26, 28, 29, 37, 38, 41, 47,\n", + " ...\n", + " 1676, 1677, 1690, 1693, 1698, 1786, 1799, 1853, 1878, 1892],\n", + " dtype='int64', name='MatchId', length=173)" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pivoted.index.levels[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1069034 850701 218333\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "\n", + "mask = np.random.choice(pivoted.index.levels[0], replace=False, size=int(pivoted.index.levels[0].shape[0] * 0.8))\n", + "pivoted.reset_index(drop=False, inplace=True)\n", + "train, test = pivoted[pivoted['MatchId'].isin(mask)], pivoted[~pivoted['MatchId'].isin(mask)]\n", + "print(pivoted.shape[0], train.shape[0], test.shape[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "import seaborn as sns\n", + "\n", + "player_baseline = train.groupby([('IsAlive', 'CT'), ('IsAlive', 'T')], as_index=False).agg({('Winner', ''): 'mean'})\n", + "player_baseline.columns = ['CT count', 'T count', 'Win probability']\n", + "player_baseline_pivoted = player_baseline.pivot('CT count', 'T count', 'Win probability')" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.heatmap(data=player_baseline_pivoted[::-1], annot=True);" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CT countT countWin probability
00.00.00.701897
10.01.00.431849
20.02.00.069738
30.03.00.051923
40.04.00.013245
50.05.00.246753
61.00.00.767359
71.01.00.314527
81.02.00.063484
91.03.00.016426
101.04.00.003314
111.05.00.001309
122.00.00.903884
132.01.00.730738
142.02.00.323620
152.03.00.091989
162.04.00.065905
172.05.00.005273
183.00.00.922530
193.01.00.900248
203.02.00.606403
213.03.00.357637
223.04.00.160770
233.05.00.074659
244.00.00.918157
254.01.00.923495
264.02.00.751979
274.03.00.556022
284.04.00.378026
294.05.00.277427
305.00.00.875318
315.01.00.819805
325.02.00.853229
335.03.00.735363
345.04.00.580107
355.05.00.480956
\n", + "
" + ], + "text/plain": [ + " CT count T count Win probability\n", + "0 0.0 0.0 0.701897\n", + "1 0.0 1.0 0.431849\n", + "2 0.0 2.0 0.069738\n", + "3 0.0 3.0 0.051923\n", + "4 0.0 4.0 0.013245\n", + "5 0.0 5.0 0.246753\n", + "6 1.0 0.0 0.767359\n", + "7 1.0 1.0 0.314527\n", + "8 1.0 2.0 0.063484\n", + "9 1.0 3.0 0.016426\n", + "10 1.0 4.0 0.003314\n", + "11 1.0 5.0 0.001309\n", + "12 2.0 0.0 0.903884\n", + "13 2.0 1.0 0.730738\n", + "14 2.0 2.0 0.323620\n", + "15 2.0 3.0 0.091989\n", + "16 2.0 4.0 0.065905\n", + "17 2.0 5.0 0.005273\n", + "18 3.0 0.0 0.922530\n", + "19 3.0 1.0 0.900248\n", + "20 3.0 2.0 0.606403\n", + "21 3.0 3.0 0.357637\n", + "22 3.0 4.0 0.160770\n", + "23 3.0 5.0 0.074659\n", + "24 4.0 0.0 0.918157\n", + "25 4.0 1.0 0.923495\n", + "26 4.0 2.0 0.751979\n", + "27 4.0 3.0 0.556022\n", + "28 4.0 4.0 0.378026\n", + "29 4.0 5.0 0.277427\n", + "30 5.0 0.0 0.875318\n", + "31 5.0 1.0 0.819805\n", + "32 5.0 2.0 0.853229\n", + "33 5.0 3.0 0.735363\n", + "34 5.0 4.0 0.580107\n", + "35 5.0 5.0 0.480956" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "player_baseline" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CT countT counttruthWin probability
05.05.010.480956
15.05.010.480956
25.05.010.480956
35.05.010.480956
45.05.010.480956
...............
2179210.05.010.246753
2179220.05.010.246753
2179230.05.010.246753
2179240.05.010.246753
2179250.05.010.246753
\n", + "

217926 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " CT count T count truth Win probability\n", + "0 5.0 5.0 1 0.480956\n", + "1 5.0 5.0 1 0.480956\n", + "2 5.0 5.0 1 0.480956\n", + "3 5.0 5.0 1 0.480956\n", + "4 5.0 5.0 1 0.480956\n", + "... ... ... ... ...\n", + "217921 0.0 5.0 1 0.246753\n", + "217922 0.0 5.0 1 0.246753\n", + "217923 0.0 5.0 1 0.246753\n", + "217924 0.0 5.0 1 0.246753\n", + "217925 0.0 5.0 1 0.246753\n", + "\n", + "[217926 rows x 4 columns]" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test = test[[('IsAlive', 'CT'), ('IsAlive', 'T'), ('Winner', '')]]\n", + "test.columns = ['CT count', 'T count', 'truth']\n", + "\n", + "preds = pd.merge(test, player_baseline, on=['CT count', 'T count'])\n", + "preds" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.7837721634898503" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.metrics import roc_auc_score\n", + "\n", + "roc_auc_score(preds['truth'], preds['Win probability'])" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.6922854546956306" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.metrics import accuracy_score\n", + "\n", + "accuracy_score(preds['truth'], preds['Win probability'] > 0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [], + "source": [ + "# WOAH. what is that??? that can't be right\n", + "\n", + "from sklearn.metrics import roc_curve\n", + "\n", + "fpr, tpr, _ = roc_curve(preds['truth'], preds['Win probability'])" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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aW+s3oPH62VML93P62wFBQUAJCcnM2vWLDIzM1XQREREXMD1JS3/dAn/WpfNDcmNaR4f63ScoFFaWsr06dNJTExk586dGGN46KGHdP8zERERl3D9cufb67IpKPLw+z6tnI4SNHbt2kVaWhpr1qzhtttuUzETERFxIdfPpL27PptrLq9PUtM4p6MEhdmzZ9OpUye+++473nrrLdLT02nQoIHTsUREROQiubqklZR62Xv0FCmJ9ZyOEjS+++47evfuTWZmJiNGjNDVmyIiIi7l6uXOgydO47XQrE4Np6M4xlrLvHnzaNOmDT169GDmzJlER0ernImIiLicq2fS9h0rBKBp3fAsabm5uQwZMoR77rmHOXPmAFCtWjUVNBERkRDg6pKWc7yspDUJw5m0999/n6SkJJYuXcqMGTN44403nI4kIiIiVcjVy5055TNpjePCa0ujRYsWkZqaSkpKCvPmzaN9+/ZORxIREZEq5uqZtP3HC4m/JIbq0ZFORwmII0eOADB48GBee+011q5dq4ImIiISolxd0k4WeahTM/Q3Uy8oKGDs2LG0b9+eQ4cOERUVxZgxY4iODv2vXUREJFy5uqQVeUqJiXL1l3BBK1eupFOnTsydO5e0tDRq1arldCQREREJAFc3nCKPN2RLmsfjYeLEifTt2xdjDCtXrmT69OlUrx5e59+JiIiEK1c3nNMlpcREheb5aJGRkezZs4exY8eyefNmrr32WqcjiYiISAC5+urOIo+X2FhXfwn/S0lJCc888wzDhw/n8ssvZ/78+URFhc7XJyIiIr5z9UxaUYmX6iEyk5aZmUn37t2ZOnUq6enpACpoIiIiYczVJe20p5SYaFd/CZSWljJ9+nRSUlLYt28fCxYs4PHHH3c6loiIiDjM1Q2nqMT9Fw688MILTJ48mcGDB5OZmcmtt97qdCQREREJAq5eTyu7BYf7ljutteTm5tKoUSMefPBBEhISGDp0qPbcFBERkV+4dhrKU+ol/7SHuBruuqHr3r17GThwIH369KGwsJDY2FhSU1NV0EREROR/cW1Jyy0ootRraVrXHZurW2uZN28eycnJrFmzhkcffVT3PBMREZHf5NrlzgPHyzZXb1In+Etafn4+aWlpLFy4kGuvvZY333yTVq1aOR1LREREgphrZ9Jyykta0zrBPxtVs2ZNjh8/zowZM/jiiy9U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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "plt.figure(figsize=(10, 7))\n", + "plt.plot(fpr, tpr)\n", + "plt.plot([0, 1], [0, 1], 'k--')\n", + "plt.xlabel('FPR')\n", + "plt.ylabel('TPR')\n", + "plt.xlim([0, 1])\n", + "plt.ylim([0, 1])\n", + "plt.title('ROC curve of players alive baseline model');" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MatchIdRoundNumTickCT countT countWinner
041152575.05.01
141152905.05.01
241153235.05.01
341153565.05.01
441153895.05.01
\n", + "
" + ], + "text/plain": [ + " MatchId RoundNum Tick CT count T count Winner\n", + "0 4 1 15257 5.0 5.0 1\n", + "1 4 1 15290 5.0 5.0 1\n", + "2 4 1 15323 5.0 5.0 1\n", + "3 4 1 15356 5.0 5.0 1\n", + "4 4 1 15389 5.0 5.0 1" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# examine what is up with the weird numbers for 0 ct's\n", + "\n", + "train.columns = ['MatchId', 'RoundNum', 'Tick', 'CT count', 'T count', 'Winner']\n", + "train.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MatchIdRoundNumTickCT countT countWinner
4974647193008350.05.00
4974847193009010.05.00
4974947193009340.05.00
4975047193009670.05.00
4975247193010330.05.00
1654882351114070.05.01
1654892351114730.05.01
1654902351115390.05.01
1654912351116050.05.01
1654922351116710.05.01
28142841210989680.05.00
28143041210992320.05.00
286213417253343490.05.00
286214417253344150.05.00
3377614741197710.05.01
3377624741198370.05.01
3377634741199030.05.01
4335135821192720.05.01
4335145821193380.05.01
4335155821194040.05.01
4335165821194700.05.01
4335175821195360.05.01
4335185821196020.05.01
5913899597990890.05.00
5913929597992870.05.00
5913939597993530.05.00
5913959597994850.05.00
5913969597995510.05.00
72813312711161770.05.01
72813412711162430.05.01
72813512711163090.05.01
72813612711163750.05.01
72813712711164410.05.01
72813812711165070.05.01
80155914191169650.05.01
80156014191170310.05.01
80156114191170970.05.01
80156214191171630.05.01
80156314191172290.05.01
8363871447121592220.05.00
8837131506243838230.05.00
8837141506243838560.05.00
8837151506243838890.05.00
8837171506243839550.05.00
8837181506243839880.05.00
8837211506243840870.05.00
8837221506243841200.05.00
8837231506243841530.05.00
\n", + "
" + ], + "text/plain": [ + " MatchId RoundNum Tick CT count T count Winner\n", + "49746 47 19 300835 0.0 5.0 0\n", + "49748 47 19 300901 0.0 5.0 0\n", + "49749 47 19 300934 0.0 5.0 0\n", + "49750 47 19 300967 0.0 5.0 0\n", + "49752 47 19 301033 0.0 5.0 0\n", + "165488 235 1 11407 0.0 5.0 1\n", + "165489 235 1 11473 0.0 5.0 1\n", + "165490 235 1 11539 0.0 5.0 1\n", + "165491 235 1 11605 0.0 5.0 1\n", + "165492 235 1 11671 0.0 5.0 1\n", + "281428 412 10 98968 0.0 5.0 0\n", + "281430 412 10 99232 0.0 5.0 0\n", + "286213 417 25 334349 0.0 5.0 0\n", + "286214 417 25 334415 0.0 5.0 0\n", + "337761 474 1 19771 0.0 5.0 1\n", + "337762 474 1 19837 0.0 5.0 1\n", + "337763 474 1 19903 0.0 5.0 1\n", + "433513 582 1 19272 0.0 5.0 1\n", + "433514 582 1 19338 0.0 5.0 1\n", + "433515 582 1 19404 0.0 5.0 1\n", + "433516 582 1 19470 0.0 5.0 1\n", + "433517 582 1 19536 0.0 5.0 1\n", + "433518 582 1 19602 0.0 5.0 1\n", + "591389 959 7 99089 0.0 5.0 0\n", + "591392 959 7 99287 0.0 5.0 0\n", + "591393 959 7 99353 0.0 5.0 0\n", + "591395 959 7 99485 0.0 5.0 0\n", + "591396 959 7 99551 0.0 5.0 0\n", + "728133 1271 1 16177 0.0 5.0 1\n", + "728134 1271 1 16243 0.0 5.0 1\n", + "728135 1271 1 16309 0.0 5.0 1\n", + "728136 1271 1 16375 0.0 5.0 1\n", + "728137 1271 1 16441 0.0 5.0 1\n", + "728138 1271 1 16507 0.0 5.0 1\n", + "801559 1419 1 16965 0.0 5.0 1\n", + "801560 1419 1 17031 0.0 5.0 1\n", + "801561 1419 1 17097 0.0 5.0 1\n", + "801562 1419 1 17163 0.0 5.0 1\n", + "801563 1419 1 17229 0.0 5.0 1\n", + "836387 1447 12 159222 0.0 5.0 0\n", + "883713 1506 24 383823 0.0 5.0 0\n", + "883714 1506 24 383856 0.0 5.0 0\n", + "883715 1506 24 383889 0.0 5.0 0\n", + "883717 1506 24 383955 0.0 5.0 0\n", + "883718 1506 24 383988 0.0 5.0 0\n", + "883721 1506 24 384087 0.0 5.0 0\n", + "883722 1506 24 384120 0.0 5.0 0\n", + "883723 1506 24 384153 0.0 5.0 0" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train[(train['CT count'] == 0) & (train['T count'] == 5)]" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Transforming raw data...\n", + "Transforming 1495/1495: 1649, de_dust2, 22\n", + "Done!\n" + ] + } + ], + "source": [ + "from csgo_wp.data_transform import transform_data, CSGODataset\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "dataset = CSGODataset(transform=transform_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "torch.Size([413319, 12, 10])\n" + ] + } + ], + "source": [ + "print(dataset.data.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Transforming raw data...\n", + "Transforming 642/642: 1786, de_dust2, 27\n", + "Done!\n", + "Transforming raw data...\n", + "Transforming 603/603: 1799, de_dust2, 30\n", + "Done!\n" + ] + } + ], + "source": [ + "val_dataset = CSGODataset(transform=transform_data, dataset_split='val')\n", + "test_dataset = CSGODataset(transform=transform_data, dataset_split='test')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "torch.Size([176370, 12, 10])\n", + "torch.Size([164819, 12, 10])\n" + ] + } + ], + "source": [ + "print(val_dataset.data.shape)\n", + "print(test_dataset.data.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.5100189291896169\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmkAAAG5CAYAAADVp6NgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3QUVR/G8e9NQiiBgNRA6L0bJAQUFZEqHQQLYgARREEUGxZAERQVVEARUJAqgogKKGIHERuhh15CCR1CCSQhyea+f+ziG2MSanZTns85OWd3587sb2c32Sf33pkx1lpEREREJHPx8nQBIiIiIvJfCmkiIiIimZBCmoiIiEgmpJAmIiIikgkppImIiIhkQgppIiIiIpmQQppIDmWMedQYc9QYc84YUyTFsvLGGGuM8bkOz7PZGHPHVaz3gDHm+2t9/qzA9R5UzIDt7jXGNL/e273Ec1pjTGXX7cnGmGHufP5rdSWffWNML2PMb+6oS3ImhTTJVlxfSrGuL70jxpgZxpj8KdrcYoz52RgTbYw5Y4xZYoypmaKNvzFmnDFmv2tbu1z3i7r3FWUMY0wu4B2gpbU2v7X2ZEY9l7W2lrV2+SXq+c8Xo7X2E2tty4yqKzNxvQd7PF3H9Wat7W+tHenpOkSyKoU0yY7aW2vzA0FAPeCFiwuMMTcD3wOLgFJABWADsOpiT4Yxxhf4CagFtAb8gVuAk0BIRhV9PXqtrkAJIA+w2Y3P6RHGGO/ruC13vkciksMppEm2Za09AnyHM6xd9BYwy1o73lobba2NstYOBf4EXnG1CQXKAp2ttVustUnW2mPW2pHW2qWpPZcxppYx5gdjTJRrCPFF1+MzjDGjkrW7wxgTmez+XmPMEGPMRuC8MWaoMebzFNseb4yZ4Lpd0BgzzRhz2Bhz0BgzKq0QYozJ7er9O+T6Ged6rCqw3dXstDHm50vtS2NMKWPMYtfr22WM6ZtsWV5jzExjzCljzFZjzHOpvMbmrtshxpgwY8xZ1356x9Xs12T1nDPG3JxyKCmtfZxKrTOMMZOMMUuNMeeBpq76FxpjjhtjIowxg66w/uTvkY8xppEx5ndjzGljzIbkw7muuve4emojjDEPuB6vbIxZ4eq9PWGMmZ9sneRDhAWNMbNcte5zfSa8km37N2PMWFe9EcaYuy7x9jUwxmxxtZ9ujMnj2tYNxpivXc9zynW79KVeh2vZQ659dcoY850xplw678Uo1+07jDGRxpinjTHHXJ/h3sna5na9rv2u93eyMSZvGtvtZYxZZYx51/Ue7DHOHvJexpgDru33TNY+vX3q7XreE8aYPUDbFM912b9zItebQppkW64vnLuAXa77+XD2iC1IpflnQAvX7ebAMmvtuct8ngLAj8AynL1zlXH2xF2u+3F+MRQCZgNtjDH+rm17A/cAc11tZwKJrueoB7QEHk5juy8BjXCG1Btx9gIOtdbuwNlLCFDIWnvnZdT4KRDpen1dgdeNMc1cy14GygMVce7DHulsZzww3lrrD1TCud8Bbk9WT35r7R/JV7qKfdwdeA0oAPwOLMHZYxoINAOeNMa0uoL6k79HJYBvgFFAYeAZYKExppgxxg+YANxlrS2A8/O23rWNkTh7cW8ASgPvpVH7e0BBVz1NcP7T0DvZ8oY4Q3ZRnP90TDPGmHT2xQNAK5z7uyow1PW4FzAdKIfzn5JY4H2A9F6HMaYT8CLQBSgGrMT5+bgcAa7XFgj0ASYaY25wLXvTVV8Qzvc3EBiezrYaAhuBIjh/P+YBDVzr9gDeN/+f6pDePu0LtMP5+xSM8/Od3JX8zolcX9Za/egn2/wAe4FzQDRgcX6RF3ItK+16rHoq67UGEly3fwDeuILnvB9Yl8ayGcCoZPfvACJT1PtQinV+A0Jdt1sAu123SwAXgLwpnvuXNJ57N9Am2f1WwF7X7fKufeGTxrr/LAfKAA6gQLLlo4EZrtt7gFbJlj2cymts7rr9KzACKJrW8yV7rBfw26X2cRr7fFay+w2B/SnavABMv4L6H0p2fwgwO8X2vgN6An7AaeDu5O+Tq80s4EOgdCo1W5whwNv1HtdMtuwRYHmyfbIr2bJ8rnUD0vl96J/sfpuLn6dU2gYBp1y303sd3wJ9kt33AmKAcslfS8rPP87PfmyK9/gYzn8kDHAeqJRs2c1ARBq19gJ2Jrtfx/W8JZI9dtL1mi61T39OsY9a8v/Pfrq/cyT7jOpHPxnxo540yY46Wed//3cA1XH2OACcApKAkqmsUxI44bp9Mo02aSmDMxBdrQMp7s/F+UUAzh6hi71o5YBcwGHXEM9pYApQPI3tlgL2Jbu/z/XYlSoFRFlro1NsKzDZ8uSvIeXrSa4Pzt6SbcaY1caYdpdZw5Xu4+Q1lANKXdxnrv32Is4vYLi8+lNur1uK7d0KlLTWngfuBfrjfJ++McZUd633HM4w8rdxHvH6UCrPUxTw5b/vW2Cy+0cu3rDWxrhu/uvgmHRq/+czYIzJZ4yZ4hr+O4szQBcyxnhf4nWUA8Yne+1RrteVvMa0nLTWJia7H+OqvRjOwLkm2XaXuR5Py9Fkt2MBrLUpH8vPpfdpyvc/ebsr/Z0Tua4U0iTbstauwPmf/FjX/fPAH0C3VJrfw/+Hz34EWrmGfC7HAZxDSak5j/PL56KA1EpNcX8BcIdruLYz/w9pB3D+V1/UWlvI9eNvra1F6g7h/JK5qKzrsSt1CCjsGnJMvq2DrtuHcfZSXlQmrQ1Za3daa+/H+SX3JvC5az+n3AcppbePU32qFOtGJNtnhay1Bay1ba6g/pTbm51ie37W2jcArLXfWWtb4Az624CPXI8fsdb2tdaWwtmT88HFeWjJnAAS+O/7dpCrl/z1JP8MPA1UAxpa5/DzxSFnk97rcL3+R1K8/rzW2t+vocYTOENVrWTbLGidBwBdq0vt08P8dx9ddKW/cyLXlUKaZHfjgBbGmIsHDzwP9DTGDDLGFHBNnh6Fc2hlhKvNbJx/nBcaY6obY7yMMUWMMS8aY9r89yn4GggwxjzpmvxcwBjT0LVsPc45ZoWNMQHAk5cq2Fp7HFiOc75QhLV2q+vxwzjnNL1tnKcI8TLGVDLGNEljU58CQ11zpYrinN8z51LPn0o9B3DO6xptjMljjKmLs0fsE1eTz4AXXPsyEBiY1raMMT2MMcWstUk4h9PAOZR6HGcvZ1rnCktvH1/K38BZ45z8n9c1Uby2MabBldbvMgdob4xp5dpWHuOcFF/aGFPCGNPBFTwv4Bx6d7heezfz/4n5p3AGP0fyDVtrHa56XnO9xnLAU1zF+5bMAFdthXH2IF48YKEAzmB02rXs5YsrpPc6gMk491ctV9uCxpjU/vG5bK7Pw0fAu8aY4q7tBiabN3gt277UPv0MGOTaRzfg/Btxcd0r/Z0Tua4U0iRbcwWeWcAw1/3fcM7N6oLzP+h9OCcD32qt3elqcwHnwQPbcM5PO4vzi74o8FcqzxGNc+5Ye5xDUTuBpq7Fs3FOWN+L84/9/JTrp2Guq4a5KR4PxTl0swXnF/3npD00OwoIwzm5ehOw1vXY1bgf57yxQ8CXwMvW2h9cy17FeVBBBM5eyM9xfrGnpjWw2RhzDudBBPdZa+Ncw3av4TwVymljTKPkK11iH6fL9SXdHuf8pAicPStTcU4kv9L6L4bWjjgDz3Gcgf5ZnH9PvXD2UB3COQzYBHjMtWoD4C/Xa18MPGGtjUjlKR7H2QO7B+f8xLnAx5fzWtMwF+dnb4/r5+JnYByQF+f++BPn8OJFab4Oa+2XOHtB57mGScNxHqBzrYbgPMjnT9d2f8TZ03c9pLdPP8I5p3ADzt+RL1KseyW/cyLXlbH2UqMMIiKXzxjzKM7wlSV7G7J6/SKSfagnTUSuiTGmpDGmsWsoqBrOHpgvPV3X5crq9YtI9pVhIc0Y87FxnlAwPI3lxhgzwThPjLnRGHNTRtUiIhnKF+cRb9E4T2ewCPjAoxVdmaxev4hkUxk23GmMuR3nZNNZ1traqSxvg3OeQBuc5zEab6293InAIiIiItlahvWkWWt/xTnhNC0dcQY4a639E+f5eTQZU0RERATnGZU9JZB/n0Aw0vXY4ZQNjTH9gH4Afn5+9atXr56yiYiIiIhHOZIs0XGJnI6JJzouAYwh/siuE9ba9E7MnCZPhrTUrjWX6tirtfZDnJdTITg42IaFhWVkXSIiIiKXJeLEeb5YG8kXaw9y8HQsCVEHubBsHA1uvpW3xoylcZVi+y69ldR5MqRF8u+zPJfm6s6GLiIiIuIWiY4kVu48wfdbjvLbruMciIoFILhsQYof+JlvZ79Dvrx5GHhva26pXPQSW0ufJ0PaYmCgMWYezgMHzrjO7iwiIiKSaVhr2Rh5hqWbDrNwbSQnzsXj6+3FzZWK8FDjCtQoEM9Lgx/j559/5q677mLq1KmUKnU1l0r+twwLacaYT3Fe4LqoMSYS5yVHcgFYaycDS3Ee2bkL50V2e2dULSIiIiJXatuRs8xffYDvNx/l4OlYfLwMTaoWo1twae6oVpw8ubyd7bZtY9OmTXz00Uf06dMHY1Kb0XXlstwVBzQnTURERDLKmdgE5q/ez4KwSHYeO/dPMGtWowRt6gRQKJ8vAEeOHOGTTz7h6aefBiA2Npa8efP+Z3vGmDXW2uCrqcWTw50iIiIiHmetZd2B08z5Yx9fbzxMvCOJuqUL8mrHWrSrW4rCfr7/av/ZZ5/x6KOPEhMTQ4cOHahSpUqqAe1aKaSJiIhIjhQTn8icP53BbGPkGfLn9qFDUCm61S9Nw4pF/tP+5MmTDBw4kHnz5hESEsLMmTOpUqVKhtWnkCYiIiI5Smy8g9l/7mXyij1EnY+nZME8vNy+Jl3rl6ZAnlyprpOUlETTpk3Ztm0bo0aNYsiQIfj4ZGyMUkgTERGRHCHBkcTXGw8x7sed7DsZQ4PyN/D+/fW4uVKRNCf7R0dHky9fPry9vRkzZgwlSpQgKCjILfUqpImIiEi2Zq1lxY7jvPHtNrYdiaZckXzM6dOQW6ukfx6zX375hd69ezNo0CCeeuopWrVq5aaKnRTSREREJNs6djaOgZ+u4++IKEr452Zyj5toVSsg3dNkxMbG8sILLzB+/HgqV65Mo0aN3Fjx/ymkiYiISLa0aP1Bhn4VzoWEJJ6/qzoPNa6Ar49XuuusWbOGBx54gO3btzNw4EDeeOMN/Pz83FTxvymkiYiISLZy8HQsw74K5+dtx6hf7gZe71yHagEFLmvdmJgY4uLi+OGHH2jevHkGV5o+hTQRERHJFpKSLDP/2Mvob7fh6+3Fs62q0e/2iuTyTr/3bOPGjSxfvpxBgwZx2223sWPHDnx9fdNdxx0U0kRERCTLO3g6lpe+3MTy7ce5o1oxXu1Qm7JF8qW7TmJiImPHjmX48OEULVqUnj17UrBgwUwR0EAhTURERLIway3TfotgzHfbscDwdjXp3bj8Ja+fuXPnTkJDQ/nzzz/p2rUrkyZNomDBgu4p+jIppImIiEiWFBvv4IUvNvLV+kPcVLYQ4++rR5nC6feeAZw7d45GjRphrWXu3Lncd9991+2i6NeTQpqIiIhkOZsPneHpzzaw7Ug0TzavwqA7q+DllX7QOn78OMWKFSN//vx8/PHHNGjQgFKlSrmp4iuX/kw6ERERkUzEkWSZ+MsuOk1cxcnz8UzrGcyTzaumG9CstcyYMYPKlSszf/58ADp27JipAxqoJ01ERESyiKNn43hmwQZW7jxBy5oleK1zHYoVyJ3uOkeOHOGRRx5h8eLFNGnShJCQEDdVe+0U0kRERCRTS3AkMe23CN7/eReOJMuoTrV5oGHZS84jW7RoEX369OH8+fO8++67DBo0CC+vrDOIqJAmIiIimdaxs3H0mRnGpoNnuLVyUV5uX5MqJS7vxLTx8fFUrFiRWbNmUb169Qyu9Poz1lpP13BFgoODbVhYmKfLEBERkQz2x+6TPPbJGmITHAxvV4v7Q8pcsvds6dKlHDp0iIcffhgAh8OBt7e3O8pNlTFmjbU2+GrWzTp9fiIiIpIjWGuZunIP3af+SZ5c3kzvFUL3SwxvRkdH07dvX9q2bcuHH36Iw+EA8GhAu1Ya7hQREZFM40BUDIPmrWPd/tM0r1GccffVI3/u9OPK8uXL6d27N/v372fIkCGMGDEiS4ezixTSRERExOOSkiyz/9zH2O+2k2QtQ9vW4KHGFS557rO9e/fSvHlzKlSowMqVK7nlllvcVHHGU0gTERERj9p74jwD5q5l86GzNKxQmFc71qZaQPoHBxw8eJDAwEDKly/P559/TosWLfDz83NTxe6hOWkiIiLiMUs2HKL1+F/ZfzKGUZ1qM69fo3QDWnx8PMOGDfun5wygU6dO2S6ggXrSRERExAOstXy0cg+vL91GvbKFmHAZ193ctGkToaGhrF+/nl69elG3bl03VesZCmkiIiLiVpGnYhg8fz2r956ieY3iTLi/Hvl8048k7777LkOGDOGGG25g0aJFdOjQwU3Veo5CmoiIiLiFtZYZv+9l7HfbcVjLK+1r0vOW8pc899lFHTt2ZNKkSRQtWjSDK80cdDJbERERyXBHz8bx0peb+HHrMZpWK8awdjWpWCx/mu2TkpKYNGkSAQEB3H333VzMK5cb6DILncxWREREMq2FayJp/vYKlm8/zvN3VefjXg3SDWj79++nZcuWDBw4kC+//BJwhrOsFtCulYY7RUREJEOcjUtg6JfhLN5wiJol/Xmvez0qpRPOrLXMnDmTJ554AofDwZQpU+jbt68bK85cFNJERETkuvs7Ior+c9ZwNjaBgU0rM7hFVbwvcWLaX3/9ld69e3P77bczffp0Klas6KZqMyeFNBEREbluHEmW6asiGP3tNgL88zCzdwh1ShdMd53du3dTqVIlmjRpwpIlS2jTpg1eXpqRpT0gIiIi18W5C4l0/+hPRn2zlZsrFuHbJ29LN6BFRUXRvXt3atWqxY4dOwBo166dApqLetJERETkmq3YcZwx320j/OBZXmxTnb63VUx3ov+3335Lnz59OH78OC+//HKOH9pMjUKaiIiIXJMv1kbyzIINFMrny5iudekWXCbNttZaHn30UaZMmULt2rX55ptvqFevnhurzToU0kREROSqnIlN4PmFG/k2/Ag1Svozr28jCubLle46xhj8/f0ZMmQII0aMIHfu3G6qNutRSBMREZEr9s3GwwyYuxaABxqW5ZUOtcjlnfpcstjYWF566SU6derE7bffzptvvpnjznl2NRTSRERE5LLFxCcy6putzP1rPzVL+jO0bQ1uqZz2ZZr+/vtvQkND2b59O4ULF+b2229XQLtMCmkiIiJyWdbtP8UzCzaw+/h5+t1ekWdaVsPXJ/Xes/j4eEaOHMno0aMpWbIk33//PS1atHBzxVmbQpqIiIik6+S5C0xavpuPV0VQJH9upvduQNNqxdNd55NPPmHUqFH07NmTcePGUahQITdVm30opImIiEiaFm84xLCvwjl3IZHO9UozvH1NCuZN/eAAh8PBjh07qFGjBj179qR8+fI0bdrUzRVnHwppIiIi8h9nYhN48ctNfLPxMH6+3iwe2JhapdI+Me3OnTvp2bMn27dvZ+fOnRQuXFgB7RoppImIiMi//LnnJE/OW8/xcxcY3Lwq/e+oSG4f71TbJiUlMWnSJJ577jl8fX2ZOHEiN9xwg5srzp4U0kRERASAC4kOXl2yhU/+2k9gobx83v9m6pVNO3DFxsbSoUMHfvzxR1q3bs3UqVMJDAx0Y8XZm0KaiIiIEH7wDM8s2MC2I9HcE1yal9vXwi93+jEhb968lCtXjilTptC3b1+dWuM6U0gTERHJwU7HxPPmsm0sCIuksJ8vk3vUp3XtgDTbHzlyhEGDBjFixAhq1KjB1KlT3VhtzqKQJiIikkOt3Hmcx+asJfpCIl3qBfJCmxoUK5D2ZZo+//xz+vfvz7lz5+jSpQs1atRwY7U5j0KaiIhIDhMdl8CrS7awYE0k5YrkY8GjN1M9wD/N9qdOnWLgwIHMnTuX4OBgZs2apYDmBgppIiIiOYS1lq83HmbEki1Enb9A39sqMKhZFQrkSf+i6OPGjeOzzz7j1Vdf5fnnnydXrvTby/VhrLWeruGKBAcH27CwME+XISIikqVEnorhmQUb+HNPFDVL+jOiYy0alC+cZvvo6GgiIyOpUaMGsbGxbN++naCgIDdWnD0YY9ZYa4OvZl31pImIiGRj1lqm/RbBqG+2ktvHixEdatGjUTm8vdI+EnPFihX06tULHx8ftm7dSt68eRXQPCD1q6KKiIhIlrcp8gxdJv3OqG+2UjvQn68GNKbnLeXTDGixsbE89dRTNG3aFG9vb2bMmIGPj/pzPEV7XkREJJux1vLhr3sY/e02iubPzcvta9LrlvLpnsfs0KFDNGvWjG3btvHYY4/x1ltv4efn58aqJSWFNBERkWzkxLkLDPsqnG/Dj9C8RgnevffGSx4YAFCiRAnq1avHhAkTaNGihRsqlUvRcKeIiEg28eOWo3SauIqfth5jULMqfPhg/XQDWnh4OC1atODIkSN4e3szd+5cBbRMRCFNREQki4tLcPDyonAenhWGj5fh036NeKpFVbzSmHvmcDh46623qF+/Phs2bGD37t1urlguh4Y7RUREsrANB04zeP569pw4T8egUrx5d13y5PJOs/2uXbvo2bMnv//+O126dGHy5MkUK1bMjRXL5VJIExERyaJm/bGXEUu2UDS/Lx+FBtOiZolLrjNy5Ei2bNnCnDlz6N69uy6KnonpZLYiIiJZzN4T53n16y38vO0YjSsX4b37b6Kwn2+a7Q8cOEB8fDyVKlXi5MmTxMXFERgY6MaKcy6dzFZERCQHOH8hkdeXbmX+6gMAPH5nZQbeWZncPqkPb1prmTVrFoMGDSI4OJiffvqJIkWKuLNkuQYKaSIiIlnApsgz9J+zhkNnYrn7ptI80awKZQrnS7P90aNHeeSRR1i0aBG33XYbH330kRurletBIU1ERCQTcyRZJq/YzZjvtlPCPzdzH27EzZXS7w1bt24dLVu2JDo6mrFjx/Lkk0/i7Z32wQSSOSmkiYiIZFKHz8Ty5Lz1/BURRbPqxXmlQ610e88uql69Oi1atGDo0KHUrFnTDZVKRtB50kRERDKhqSv30PLdX9kQeZrRXeowtWdwugFt2bJlNGnShHPnzpE3b17mzp2rgJbFKaSJiIhkMlNW7GbUN1upUjw/3wy6jftDyqZ5qozo6Gj69+/PXXfdxcmTJzl69Kibq5WMouFOERGRTOLchURGL93KJ3/tp3WtAN7rXo9c3mn3p/z666/06tWLvXv38uyzz/Lqq6+SJ08eN1YsGUkhTUREJBP4becJnpy/nhPnLtDrlvIMbVsDn3QCmrWW4cOH4+XlxcqVK2ncuLEbqxV3UEgTERHxoANRMQxfFM4v249TrEBuZvcJ4bYqaV+mafXq1ZQpU4aAgADmzp2Lv78/+fPnd2PF4i4ZOifNGNPaGLPdGLPLGPN8KssLGmOWGGM2GGM2G2N6Z2Q9IiIimUn4wTN0/uB3/twTxcCmlVnx7B1pBrT4+HiGDx/OzTffzNChQwEoVaqUAlo2lmE9acYYb2Ai0AKIBFYbYxZba7ckazYA2GKtbW+MKQZsN8Z8Yq2Nz6i6REREPO149AWGfRXOss1HKJDHh0/7NSKoTKE024eHhxMaGsq6det48MEHGTt2rBurFU/JyOHOEGCXtXYPgDFmHtARSB7SLFDAOA9ZyQ9EAYkZWJOIiIhHrdhxnIFz1xKX4KDXLeV5olkVbkjnuptLliyha9euFCxYkC+++ILOnTu7sVrxpIwMaYHAgWT3I4GGKdq8DywGDgEFgHuttUkpN2SM6Qf0AyhbtmyGFCsiIpKRYuMdTPh5J1NW7KZ4gTx8+VhjKhdPe6jSWosxhptvvpkHH3yQ119/neLFi7uxYvG0jJyTltoJXWyK+62A9UApIAh43xjj/5+VrP3QWhtsrQ0uViztyZQiIiKZ0Yodx2k7YSWTlu+mY1AgS5+4Lc2AZq3lgw8+oFmzZiQmJlK0aFGmTp2qgJYDZWRIiwTKJLtfGmePWXK9gS+s0y4gAqiegTWJiIi4TXxiEi98sYmeH/9NkrXMfCiEd+8NonAaw5sHDhygVatWDBgwAF9fX6Kjo91csWQmGTncuRqoYoypABwE7gO6p2izH2gGrDTGlACqAXsysCYRERG3WLf/FM99vpGdx87xUOMKPNe6GnlypX6Rc2sts2bNYtCgQTgcDiZPnky/fv3SvMqA5AwZFtKstYnGmIHAd4A38LG1drMxpr9r+WRgJDDDGLMJ5/DoEGvtiYyqSUREJKPFxCfy7g87+GhlBP55fHj33hvpXK90uuvEx8czevRo6taty4wZM6hUqZKbqpXMzFibcppY5hYcHGzDwsI8XYaIiMh/LNlwiGGLwjkdk0DneoEMa1czzaFNcB652bRpU/Lnz8/BgwcJCAjA2zv13jbJmowxa6y1wVezri6wLiIico0SHUm888MOHv90HeWK+DG3b8N0556dOnWKHj160KFDByZMmABAYGCgApr8iy4LJSIicg0On4ll0KfrWL33FO3qluTte24kt0/aYWvZsmX06dOHY8eO8corr/Dss8+6sVrJShTSRERErtKh07F0m/wHZ2ITePfeG+kUFJjuZP/x48fz5JNPUrNmTRYvXkz9+vXdWK1kNQppIiIiV+HviChCP/4LgLl9G3FT2RvSbOtwOPD29qZdu3YcOXKEl19+mTx58rirVMmidOCAiIjIFTgQFcOY77azeMMhSvjnZlrPBtQOLJhq27i4OF566SX27NnDF198oVNq5EDXcuCAetJEREQuQ1KSZdKK3Yz5bjteBh69oxKP3VGJAnlypdo+LCyM0NBQtm7dymOPPUZiYiK5cqXeViQ1CmkiIiKXcPRsHP3nrGHd/tM0r1Gcl9rWpEJRv1TbJiQkMGrUKF577TUCAgL47rvvaNmypZsrluxAIU1ERCQd328+wotfhhMTn8hbd9elW3DpdIctz549y5QpU+jevTsTJnpK33EAACAASURBVEygUKFCbqxWshOFNBERkVQkOpJ4+4cdTFq+m4rFnOc+q1qiQKptHQ4Hs2fPpkePHhQpUoSNGzfqguhyzRTSREREUjh3IZHQaX+xdv9putwUyOud66R53c1du3bRq1cvVq1aRb58+bjnnnsU0OS6UEgTERFJZufRaB7/dB3bjkTzVte6dKuf+vCmtZbJkyfzzDPPkCtXLmbNmkW3bt08ULFkVwppIiIiLit3HufhmWHk9vHiwwfr07JWQJptBwwYwKRJk2jZsiXTpk2jdOn0L6IucqUU0kREJMdzJFk+/i2CN5dto7CfL18OaExgobz/aWet/edUGr169aJOnTr0799f5z+TDKGQJiIiOdq2I2cZ+mU4YftOcWf14rx5d12KFcj9n3bHjh2jf//+lCxZkokTJxISEkJISIgHKpacwsvTBYiIiHjCmZgEBs5dS+txK9lxNJo3utRhWs/gVAPaF198Qa1atVi6dCkVK1b0QLWSE6knTUREchRrLQvWRDJ8UThxCUl0rhfIsHY1Kezn+5+2p06dYtCgQcyZM4ebbrqJWbNmUatWLQ9ULTmRQpqIiOQYp2PiefzTdazceYKgMoV4uX1N6qVzYfSoqCiWLFnCK6+8wosvvqjLOolbKaSJiEiOsOHAaXrPWE3U+XiGtq1B78YV8Pb674T/c+fOMXv2bPr370+lSpXYu3evrhogHqGQJiIi2VpMfCLPfr6RZeFHuCGfL5/2bcTNlYqk2nblypX06tWLiIgIGjRoQHBwsAKaeIwOHBARkWxr17Fo7hq/km82HqZ93ZJ8P/j2VANaXFwczz77LE2aNAFgxYoVBAcHu7tckX9RT5qIiGQ7FxIdTPhpJzN/34ePt2Huww25pXLRNNu3bduWn3/+mf79+zNmzBjy58/vxmpFUmestZ6u4YoEBwfbsLAwT5chIiKZkLWWL9Ye5JUlm4mOSySkQmHe6FKHisX+G7oSEhIwxuDj48OyZcswxtCqVSsPVC3ZmTFmjbX2qrpl1ZMmIiLZwvkLiTz2yVpW7DhOjZL+DG5eJc3LOm3evJnQ0FC6du3KCy+8QOvWrd1crcilKaSJiEiWt2ZfFI99spajZy/wRLMqDGpWJdUjNx0OB++++y5Dhw7F39+fGjVqeKBakcujkCYiIlnWhUQHU1bsYeIvuyiaPzfTezegabXiqbbdvXs3vXr14rfffqNTp05MmTKF4sVTbyuSGSikiYhIlrTtyFl6T1/N4TNxtKpVghEdahNQME+a7U+cOMHWrVuZNWsWPXr00EXRJdNTSBMRkSwlKckyacVu3vlhB/l8vZnY/Sba1i2ZatvIyEiWLFnCo48+SsOGDdm3bx9+fn5urljk6iikiYhIlrF2/yme+3wju46do2m1YrxzTxA3pHLNTWstc+bM4fHHHycxMZFOnTpRsmRJBTTJUnQyWxERyfQcSZaJv+yi2+Q/OBubwLh7g5jWs0GqAe3YsWPcfffdhIaGUrt2bdavX0/Jkqn3tIlkZupJExGRTC384Ble+nITGyLP0LJmCcbecyP+eVK/0HlCQgKNGjXi4MGDjBkzhsGDB+Pt7e3mikWuD4U0ERHJlGLiE3nj223M+XMfhf18GdO1Ll3rl051wn90dDT58+cnV65cjBkzhurVq1OrVi0PVC1y/Wi4U0REMp2wvVHc/9FfzPpjH/eHlOWnp+6gW3CZVAPad999R40aNZg9ezYAd999twKaZAvqSRMRkUzDkWQZ+/12Ji3fjd8ljtw8d+4czz77LJMnT6ZGjRrUrFnTzdWKZCyFNBERyRT2njjP4M/Ws27/adrfWIpRnWpTMG/qc89+//13HnzwQSIiInj66acZOXIkefPmdXPFIhlLIU1ERDzq4kXRX/hyE7m8TLpzzy46fvw41lqWL1/O7bff7sZqRdzHWGs9XcMVCQ4OtmFhYZ4uQ0REroPj0Rd46ctNfL/lKCHlCzOmW13KFUn9XGZr1qxh48aN9O7dG4ALFy6QO3dud5YrcsWMMWustcFXs6560kRExCPW7DvFI7PDOB2TwHOtq9Hvtor4eP/3eLaEhARef/11Ro0aRZkyZejevTu5c+dWQJNsTyFNRETcKj4xiXE/7mDSit2UKpiXrwc1pHqAf6ptt2zZQmhoKGvWrKFHjx5MmDBB4UxyDIU0ERFxm2Nn43hy/np+332SLvUCebl9LQrmS/3ggOPHj9OgQQP8/PxYuHAhXbp0cXO1Ip6lkCYiIm7xd0QUj32yhrOxibzeuQ7dG5ZNtV1UVBSFCxemWLFiTJ06lWbNmlG8eHE3VyvieTqZrYiIZChHkmXcjzu4/6M/yefrw6KBjVMNaNZaJk2aRLly5fjxxx8BuP/++xXQJMdST5qIiGSY9QdO88IXm9h6+Cwdg0rxaofaqQ5vRkZG0qdPH77//nuaN29OtWrVPFCtSOaikCYiItedI8ny8W8RvPvjDvLm8ubtbjfS5abAVM99Nm/ePPr3709CQgITJ07k0UcfTfccaSI5hUKaiIhcV8fOxvHEvPX8seckd1QrxthuN1I0f9pHZEZFRVG7dm1mzJhB5cqV3VipSOamk9mKiMh1E37wDA/PDCMqJp6RHWtxTxoXRf/qq69ISEigW7duWGtJSkrC29vbAxWLZKxrOZmtDhwQEZFrZq1l4i+76DhxFYlJSXzatxH3Nij7n4B2+vRpQkND6dy5M5MmTcJaizFGAU0kFRruFBGRa3LuQiKD56/nhy1HaVmzBKO71KFIKsOb33//PQ899BBHjhzh5Zdf5qWXXtLcM5F0KKSJiMhVO3U+nr6zwgjbd4rn76rOI7dXTDV4bdy4kVatWlGjRg2++uorgoOvavRHJEdRSBMRkasStjeKF77YxJ4T5xl/XxAdgwL/0+bIkSMEBARQt25d5s6dS6dOncibN68HqhXJejQnTURErsjZuASenLeOe6b8wdm4BKb2DP5PQIuLi+O5556jQoUKbNq0CXCemFYBTeTyqSdNREQuW+SpGPrPWUP4wbPcH1KWF9pUxz/Pv09Ou3btWkJDQ9m8eTOPPPII5cuX90yxIlmcQpqIiFyWhWsiGfpVOAmOJMbdG0Snev8d3nzttdd45ZVXKF68ON9++y2tW7f2QKUi2YNCmoiIpMtay7TfIhj1zVaqBxRg/H31qBZQINW2MTEx3Hvvvbz33nvccMMNbq5UJHtRSBMRkTQdPhPL8ws3sWLHcRpVLMyM3iHkyfX/c5o5HA7GjRtHUFAQzZo1Y+TIkXh5abqzyPWg3yQREUnVwjWRtHr3V/7Yc5IX21Rndp+G/wpoe/bsoWnTpjzzzDMsXLgQQAFN5DpST5qIiPzLhUQHL34RzsK1kTSqWJiRHWtTpcT/hzettXz44Yc8/fTTeHt7M3PmTB588EEPViySPSmkiYjIP/adPE/3j/7i4OlY+t5WgefvqoG3179PTrto0SL69+9P8+bN+fjjjylTpoyHqhXJ3hTSREQEgEXrDzL0y3CSrGV0lzrcH1L2n2XWWvbt20f58uXp0KEDCxcupHPnzrqsk0gG0uQBEZEcLsGRxNvfb+eJeeupFlCAJY/f+q+Advz4cbp27UpQUBCHDh3Cy8uLLl26KKCJZDD1pImI5GARJ87z2Cdr2Xr4LG3rlOSde28kt8//Dw746quv6NevH2fOnGHkyJGUKFHCg9WK5CwKaSIiOdTCNZG8+OUm8vl6M7lHfVrXDvhnWWJiIn369GHWrFnUq1ePn3/+mdq1a3uwWpGcRyFNRCSHOXnuAs8s2MAv249TJ7Ag73evR7kifv9q4+Pjg4+PD8OGDWPo0KH4+vp6qFqRnEshTUQkBzkQFcMDU//i5LkLDLqzMgPurPzP8Ob58+d5/vnn6devH3Xq1GHq1KmadybiQQppIiI5gCPJMuuPvbzz/Q4sMKlHfW6vWuyf5atWraJnz57s2bOHKlWqUKdOHQU0EQ9TSBMRyeaOnY3j3g//JOLEeW4qW4hx99ajbJF8AMTFxTF8+HDGjh1L+fLl+eWXX2jSpImHKxYRUEgTEcnWVu06wdOfbeDk+QtM7H4TbeoE/KuH7IMPPmDMmDH069ePsWPHUqBA6hdOFxH3U0gTEcmmvlp3kCfnr6dSMT+m9WpMrVIFAUhISGDfvn1UrlyZAQMGUK9ePZo2berhakUkpQw9ma0xprUxZrsxZpcx5vk02txhjFlvjNlsjFmRkfWIiOQECY4knvpsPU/OX09QmUJ82rfRPwFty5Yt3HLLLdx5553ExMSQO3duBTSRTCrDetKMMd7ARKAFEAmsNsYsttZuSdamEPAB0Npau98YUzyj6hERyQl2HTvH45+uY+vhszx8awWG3FWdXN5eJCUlMW7cOF588UXy58/P5MmTyZcvn6fLFZF0ZORwZwiwy1q7B8AYMw/oCGxJ1qY78IW1dj+AtfZYBtYjIpKtrd1/ip7T/sYCozrVpkejcgCcPn2ajh078uuvv9KhQwc+/PBDXTlAJAvIyJAWCBxIdj8SaJiiTVUglzFmOVAAGG+tnZVyQ8aYfkA/gLJly6ZcLCKS4/215ySPzFmDX24fZj4UQrWA/x8A4O/vT7FixZgxYwahoaE6tYZIFpGRc9JS+ytgU9z3AeoDbYFWwDBjTNX/rGTth9baYGttcLFixVIuFhHJsay1fLB8Fw9O+5sb8vkyt29DqgUU4ODBg9x7771ERkbi5eXF559/Ts+ePRXQRLKQjAxpkUCZZPdLA4dSabPMWnveWnsC+BW4MQNrEhHJNuISHDwxbz1vLdtOUNlCfPnYLVQo6scnn3xC7dq1WbJkCevWrfN0mSJylTIypK0GqhhjKhhjfIH7gMUp2iwCbjPG+Bhj8uEcDt2agTWJiGQLB0/H8sDUv/hm02GealGV+f0akXD+DF27dqVHjx7UqFGDDRs20L59e0+XKiJXKcPmpFlrE40xA4HvAG/gY2vtZmNMf9fyydbarcaYZcBGIAmYaq0Nz6iaRESyuouXd3p96VYcSZbXO9fhvhDnXN0RI0bw9ddf88Ybb/DMM8/g7e3t2WJF5JoYa1NOE8vcgoODbVhYmKfLEBFxu30nzzN4/nrW7j9NSIXCvNGlDoVzJRIVFUXFihU5ffo0Bw4coE6dOp4uVURcjDFrrLXBV7OurjggIpKJbTtylhe+2MTOo+c4dyGRArl9eOvuunQLLs2PP/5Ik4ceIiAggL///ptChQpRqFAhT5csIteJQpqISCaU6Ehi1h/7eGPZNgrlzcXdNwVSJH9uOgaVomgeGDhwIB988AHVq1dn4sSJOmpTJBtSSBMRyWSOnImj3+wwNkae4ZZKRXjnniACCuYBYPfu3QS1bs3u3bsZPHgwr732Gnnz5vVwxSKSERTSREQykWXhh3n+i00kJVnevfdGOgUF/quXrHTp0tSsWZOpU6fSpEkTD1YqIhktQy+wLiIilycuwcGwr8LpP2ctAf55mNfvZjrXK40xhrVr19K2bVvOnDlD7ty5WbRokQKaSA6gkCYi4mH7T8bQbfIfzP5zH93ql2bJ47dSs5Q/CQkJvPrqqzRs2JB169axZ88eT5cqIm6k4U4REQ/6ZdsxBs1bR4IjiXH3BtGpXiAAW7duJTQ0lLCwMLp37857771H4cKFPVytiLiTQpqIiAdcSHTwzIKNfL3xEOUK5+P97jdRO7DgP8ufffZZIiIiWLBgAV27dvVgpSLiKQppIiJu9sfukwyev54jZ+PoUi+QER1rUSBPLiIiIsidOzelSpViypQpeHt7ExAQ4OlyRcRDNCdNRMRNkpIs437cwf0f/Ym3l2HmQyG8c28Q+XP78OGHH1KnTh2eeOIJAAIDAxXQRHI49aSJiLjBqfPxDP5sPcu3H+e2KkV57/56FMrny8GDB3n44YdZtmwZzZo14+233/Z0qSKSSSikiYhkoKQky5KNh3jj220cORvH0LY16HNrBYwxrFq1inbt2hEfH8/777/Po48+ipeXBjhExEkhTUQkg+w5fo6nF2xg3f7TVA8owPj76hFS4f9HaNaqVYtmzZoxevRoqlSp4sFKRSQzUkgTEbnO4hIcvLVsOx+viiCfrzeju9ThnuAyeHsZFi1axOTJk1m0aBGFChXi888/93S5IpJJKaSJiFxHa/efYsjnG9l57Bwdg0rx/F3VKVkwL2fOnOGJJ55g5syZ3HjjjRw/fpzAwEBPlysimZhCmojIdTLxl12M/X47Rfx8md0nhNuqFAPgp59+onfv3hw6dIihQ4cybNgwfH19PVytiGR2CmkiItfoxLkLDF8UztJNR2hcuQjv3htE8QJ5AHA4HDz11FP4+fnx+++/ExIS4uFqRSSrUEgTEbkGC9dEMmLJZqIvJPJUi6r0b1IJXx8v/vjjD2rVqoW/vz+LFi2iRIkS5M2b19PlikgWomO9RUSuwpEzcQycu5anF2ygfFE/Fg1ozKBmVbCOBIYMGcKtt97KqFGjAChfvrwCmohcMfWkiYhcgURHEiOWbOGzsAPEO5IYdGdlnmheFW8vw7p16wgNDSU8PJy+ffsybNgwT5crIlmYQpqIyGXafiSa/nPWEHHiPHdUK8bQtjWpXDw/AHPnzqVnz54UK1aMb775hjZt2ni4WhHJ6hTSREQuw6w/9vL60q3k8/Xhgwduok2dkgBYazHG0LhxY0JDQxkzZgyFCxdOf2MiIpdBIU1EJB3WWt76bjuTlu+mUjE/ZvdpSKlCeUlKSmL8+PGsXLmShQsXUq5cOaZNm+bpckUkG9GBAyIiabiQ6GD4os1MWr6bu2oHsOTxWylVKC8RERE0bdqUp556ioSEBM6fP+/pUkUkG1JPmohIKtbuP8XwReGEHzxL6M3leLl9LbwMfPTRRzz11FN4eXkxffp0evbsiTHG0+WKSDZ0xSHNGOMN3Get/SQD6hER8ahERxKz/9zHyK+3UCR/bibcX48ON5YC4OzZs4wYMYKQkBCmT59O2bJlPVytiGRnaYY0Y4w/MAAIBBYDPwADgWeA9YBCmohkK7uORTNw7jq2HYmmYYXCvN/9Jorm92Xx4sW0bt0af39/Vq1aRZkyZfDy0mwREclY6f2VmQ1UAzYBDwPfA12Bjtbajm6oTUTEbWb+vpc2E37j0OlYPnjgJub1awRxZ+nWrRsdO3bk448/BqBcuXIKaCLiFukNd1a01tYBMMZMBU4AZa210W6pTETEDc5fSOTJ+ev5YctR7qhWjLfurktx/zwsXryYvn37curUKUaPHk3fvn09XaqI5DDphbSEizestQ5jTIQCmohkJ5GnYhjwyVo2RJ7hiWZVePzOyvh4ezFy5EiGDx/OjTfeyA8//EDdunU9XaqI5EDphbQbjTFngYuHLeVNdt9aa/0zvDoRkQxgreXLdQd5efFmkpIs4+8LomNQIElJSQC0b9+e+Ph4hg0bhq+vr4erFZGcKs2QZq31dmchIiLu8sS89SzecIiaJf15v3s9SuQzPP7448TGxjJ16lSCgoIICgrydJkiksOlOfvVGJPHGPOkMeZ9Y0w/Y4zOqSYiWdrJcxcY8MlaFm84RNf6pVny+K0c2bmRoKAg3n//fQoUKPBPb5qIiKelF7xm4pyXthJoA9QCnnBHUSIi11N8YhKz/tjLm8u2kZhkGdC0Ev0al+WlF19gzJgxlClThl9++YU77rjD06WKiPwjvZBWM9nRndOAv91TkojI9bP3xHn6zFzN7uPnubVyUV5sU4OapfzZv38/kyZN4qGHHuLtt9/G31/TbEUkc7ncozsTddkTEclq1uyLou+sNSQ6kpjcoz7Nqxdl/vz51OjenbJly7Jt2zZKlizp6TJFRFKVXkgLch3NCc4jOnV0p4hkCcfOxvHWd9v5Ym0kxQvk4dO+jbCnD3LLLR1YvXo1xYsXp0WLFgpoIpKppRfSNlhr67mtEhGR62DReuepNWIuOHiwUTkGt6jCjA8n8cILL+Dn58f8+fNp0aKFp8sUEbmk9EKadVsVIiLX6ExMAsMWhbN4wyFqlPRn/H1BVC1RgO7du/Ppp5/Srl07PvroIwICAjxdqojIZUkvpBU3xjyV1kJr7TsZUI+IyBVJSnKemPb1pVs5FRPPw7dW4Pm7qmNc/2f27t2bFi1a0KtXLzS3VkSykvRCmjeQn/9fcUBEJFPZdSyawfM3sOngGWqV8mdarwYU946hQ/t2NGjQgBEjRmhoU0SyrPRC2mFr7atuq0RE5DJZa/l41V7G/bgDL2N4q2tdutQLZMFn87lzwADi4uJo3769p8sUEbkm6YU09aCJSKZz8HQsT85bx+q9p6hZ0p/JPeqTz8bQ/f77WLBgAY0aNWLmzJlUrVrV06WKiFyT9EJaM7dVISJyCdZa5vy1n/E/7uBUTAIvtalB78bl8fH2Yt267SxdupTRo0fz7LPP4u2tSw+LSNaX3gXWo9xZiIhIWnYcjea5zzey/sBpapXy59O+jSieJ4lP5symZ8+e1KtXj3379lGkSBFPlyoict2keYF1ERFPS3Qk8dGve2j33m/sPXme0V3qsGTgrewP/5s6derQp08fdu7cCaCAJiLZTnrDnSIiHrPzaDSDP1tP+MGzNK5chLe7BVHAx8ETTwzi/fffp2rVqqxatYoqVap4ulQRkQyhkCYimYojyTLl1928/f0OCuXNxfj7gugYFEhSUhIhISGsWbOGQYMGMXr0aPLly+fpckVEMoxCmohkGgeiYnh6wQb+joiiSdVivHF3HYrk9cZai5eXF0OGDKFo0aI0bdrU06WKiGQ4zUkTEY87dyGRN5dto8W7K1h/4DQvtqnOjN4NOBqxnfr16zN16lQAunXrpoAmIjmGetJExKO2HTnLQ9NXc+hMHG3qBPBS25qUyJ+L1157jREjRlC0aFFKly7t6TJFRNxOIU1EPMJay4I1kQxZuJEb8vkyp09Dbq1SlO3bt9OlVSh///039913H++//76O3BSRHEkhTUTc7udtR5nw0y7WHzhNg/I38N79NxFQMA8AERER7N69m/nz53PPPfd4uFIREc9RSBMRt0lwJDH0y3Dmhx0gf24fXutcm3uCy3DwwH5mL17Jgw8+SOvWrYmIiKBAgQKeLldExKMU0kTELQ5ExTB4/nrC9p0i9OZyvNimBrl9vJg2bRqDBw/G19eXDh06ULBgQQU0EREU0kQkg1lrmfPnPsZ+v4O4BMc/5z07fPgwffv25ZtvvqFp06ZMnz6dggULerpcEZFMQyFNRDLMuQuJPP3Zer7bfJSQ8oV5s2tdKhT14/z589SrV4+zZ88yYcIEBgwYgJeXzggkIpKcQpqIZIgdR6N5eGYY+6NiGNK6Ov1ur0hcbAwAfn5+vPnmm9x8881UrVrVw5WKiGRO+tdVRK4ray1LNhyi/Xu/EROfyCcPN+TROyqx9JuvqVy5MkuXLgWgZ8+eCmgiIulQT5qIXDdR5+N57vMN/Lj1GHUCC/JhaH3yEc9DDz3E9OnTufHGG3ViWhGRy6SQJiLXxbebDjNs0WbOxibwbKtq9Lu9Ir/9uoJevXoRGRnJSy+9xPDhw/H19fV0qSIiWYJCmohck9h4B8MXhbNgTSR1SxdkRu8G1A50HqW5Z88e8uTJw++//07Dhg09XKmISNZirLWeruGKBAcH27CwME+XISLAuv2neOnLcLYcPsujd1TiyeZVWLv6byIjI+nWrRvWWi5cuECePHk8XaqIiEcYY9ZYa4OvZl0dOCAiV+xCooOXF4XT+YPfOXn+Ah88cBNPNq3AK8OGcuutt/Lqq6/icDgwxiigiYhcJQ13isgViUtwMHDuWn7ceowHGpblmZbV2L9rKyEhrdm4cSN9+vThnXfewdvb29OliohkaQppInLZNkaeZtCn69gfFcMr7WvSq3EF9u7dS0hICIULF2bJkiW0a9fO02WKiGQLCmkicll+3naUgXPXcUM+Xyb1qE/DQOcwZvny5fnggw/o1KkTRYoU8XCVIiLZh+akiUi6LiQ6GLFkMw/NCKPMDflY8Egjtv04n7Jly7JmzRoA+vTpo4AmInKdZWhPmjGmNTAe8AamWmvfSKNdA+BP4F5r7ecZWZOIXL7wg2d4+rMNbD8azf0hZbi/Rl4e6NKW5cuX07ZtW0qVKuXpEkVEsq0MC2nGGG9gItACiARWG2MWW2u3pNLuTeC7jKpFRK5MgiOJCT/tZPKK3fjl9mH8fUFErfuexiGDMMYwbdo0evfujTHG06WKiGRbGdmTFgLsstbuATDGzAM6AltStHscWAg0yMBaROQy/bLtGMMWhRN5KpaWNUvwxt11Kezny6uLDxAcHMz06dMpX768p8sUEcn2MnJOWiBwINn9SNdj/zDGBAKdgcnpbcgY088YE2aMCTt+/Ph1L1REnKfWeOPbbfSesRpj4IMHbqJZ7t2s/u0XAF588UV++uknBTQRETfJyJCW2jhIyssbjAOGWGsd6W3IWvuh/V97dx5nY93/cfz9NYMQkSX7EoMYY5nJkjC0iURRlrKlEKVo4b5b3LcS0YJCIbIkyTJUbqUiomTsxjohM9YwzBjDbN/fHzPd9/xkOYZzrnPmvJ6PxzzqnHONx9vja2be87muc32tDbPWhhUvXvy6BQSQYeeReD08YY0++ul3ta9XVp93Ddb0N59Xp06d9NFHGb9DBQYGKlcu3msEAJ7iztOdsZLKZXlcVtKhC44JkzQn87qWYpJaGWNSrbURbswFIIt9xxPVadKvkqQPOteVidmg2+u11IkTJzR8+HC9/PLLDicEAP/kzpK2TlKQMaaSpIOSOknqkvUAa22lv/7fGPOppK8paIDnrNt/Uk/PWq+U1HRF9G+sw7s2qlmbNgoJCdHSpUtVu3ZtpyMCgN9yW0mz1qYaY55Rxrs2AyRNtdZGGWP6Zr5+2evQALhPerrV20t3atrq/SpV+AZNeLiKssR2KwAAG0JJREFUgm4pqColmmjatGnq0qWL8uTJ43RMAPBrxtoLLxPzbmFhYTYyMtLpGIDPOnDirAbP36Jf9p5Qi8o3Kdf62fry88+0efNm3hQAANeZMWa9tTYsO5/LtlCAH5m3Plb/XLBVktQzKEWfvf2E9uzZowEDBqhEiRIOpwMAZEVJA/zAnwnn9WrEVn0bdVT1KxZRid0RGtb7XZUtW1Y//PCDWrRo4XREAMAFeD89kIMlJafpvWW71eKdFfo26qj6NLtVs55sqOQzp9SjRw9t2bKFggYAXopJGpADWWv1w45jeiViq47Gn1eDCjfplv3f6d4SJZUnMJcmTpyogIAAp2MCAC6DkgbkMNZajf52lyas+F0ViubXW82LatzQ5zV37VoVyJWi0NBQChoA+ABKGpCDnE5KUZ+Zkfp170k9VKeUyh1eqV7t/qH8+fNrzpw56tixo9MRAQAuoqQBOcT6P05q0NzNOhiXpMEtqyvv3p/Ua9BAtW7dWpMnT1apUqWcjggAuAqUNMDHWWv12doD+tfiKN2UL1DjHiynVg0rK6VxeRUsWFAdOnRQ5tZrAAAfQkkDfNjJxGT1nhGpyD/iVLNwmtJWjteTEzdq+/btKly4sB555BGnIwIAsomSBvioTTGn1P+zDTp4KkmNzS4tHT1cZ8+e1ciRI1WoUCGn4wEArhElDfAx51PT9OrCbZq/IVZF8kqVt07W7CWLVL9+fc2YMUPVqlVzOiIA4DrgZraAD9l9NEH3j12lL9fHqnVIaf3w8j0qlMdo+PDhWr16NQUNAHIQJmmAj/hx51H1+2yD8tnzCvljkV7oO1SF8+fRggULeGMAAORATNIAL5eSlq6hi7ap1/RIBR7Zrj+nD9A3c2do+fLlkkRBA4Acikka4MUOnkrS07PWa9O+o7pp2zxt+26OgoKCtHr1ajVs2NDpeAAAN2KSBngha63mRsborndXaPuheIXGrdC27+ZowIAB2rRpEwUNAPwAkzTAyySeT9W/Fkdp7m/7FFLU6oMn71XRvE20vlt7hYeHOx0PAOAhlDTAi2w7eFr9Ptug6J3bZFeM1778gSr7YhsFBgZS0ADAz1DSAC+xfOcx9Zu1TvFr5+vPn2ap6M03a8TYyQoM5MsUAPwR3/0Bh6WmpWvo4ijN+HGzTi8eoYQD2/XII49owoQJKlasmNPxAAAOoaQBDopLTNaAORu1as9xtawXpL07Suupt19Tx44dubUGAPg5ShrgkGXbj2rQ1GXat2Sy3hj1ngY+ECrb4zvKGQBAEiUN8LhDp5L0xtdRmvvZTJ1ePkV5A3OpToF4SdyYFgDwP5Q0wEOstVq48aCGzFypI9+MU8KetWrarJmmf/qpKlas6HQ8AICXoaQBHpCalq7B87dq/oZYnV85VckxmzVmzBg9++yzypWLe0oDAP6Okga42c4j8Xru01WKijmu/g/UV9dnpuvMmQRVr17d6WgAAC9GSQPcxFqrT37ep6EfztSxJWMVHByiIR9247ozAIBLKGmAG6SmpeupT1Zq3vgROrPlO91WI1jTJo6hoAEAXMbFMMB1lpScph7vLdDMlzoqcdv3Gjx4sDZuiFSdOnWcjgYA8CFM0oDrKOrQab0wd7O2H7KqXKWKpo5boMaNGzsdCwDgg5ikAdfJiOlfqX7zVjoSl6DpfZpp1/rVFDQAQLYxSQOu0ZG4M2rZfYA2fz1d+QoX15hWZRRevYTTsQAAPo5JGnANZn6zUrfeVlubv5qmsLvbad/u7QpvwLVnAIBrR0kDsiH+XIre+CpKT/Xpo9TEOH0wbbbWfTdftxS72eloAIAcgtOdwFX6aPEqTfzlmE7bG/T4kHf06kOhqlimpNOxAAA5DCUNcNGJhHN66Nmh+vmzsSoVdo8WfPapGtxa1OlYAIAcipIGuOCbNVvUpWsPxe/dqKDQJvr2iwmqVJ6CBgBwH65JA65gxOQv9GDzhkqM3alXR47RrnU/qVL5ck7HAgDkcEzSgEs4Fn9Ow5fs0PxN51WsaqgWzZqkhrVvczoWAMBPMEkDLmLQyImq2uhefbPloPo/cLtiNv5EQQMAeBSTNCCL7fsOqnWnntr/2zIVrnCbZj0erIY1KjodCwDgh5ikAZmeGz1VtUNqaX/kjwrv8qwO79pEQQMAOIZJGvzekdPn9K+FmzTlzX/oxkJFNGPRV3qwBXtuAgCcRUmD30pPtxo+LUKf7w1UqgnUS2Nm6NWOTVUgfz6nowEAQEmDf9q076ge7P6MYlbNU822fbVk0ihVKVHQ6VgAAPwX16TBr6SlW/3z44VqcHuYYlbN090duuuXmaMpaAAAr8MkDX7jjxOJavX0UG2f977yFy6uGRHfqGPbVk7HAgDgoihp8AsLN8RqyIKtSilSRfe066i5UyeocOHCTscCAOCSON2JHO3IqUTV69BfXXs8oZqlC+k//35M3y2YTUEDAHg9ShpypLPJqRr8yVLdGhymjfMnqNrNAZrZM1TVSnLtGQDAN1DSkONsiz2lmu2f1+i+7ZQWd1CjPpyiyOVLVCDfDU5HAwDAZVyThhzDWqtZaw9o6JzVivl+usIa3qGIL2apdOnSTkcDAOCqUdKQI5xOSlaX1yZoW0BlhYdUUf9f1+r2kNtkjHE6GgAA2cLpTvg0a60+/X6jKtZrpiXvDlSLPHs1rcftql+7BgUNAODTKGnwWYdOJenuZ99WrwfDFR+9QQNffVOf/PtZ5cpFOQMA+D5Od8InLdp0UE/2e07Hf5mv8tVq6et5n6tWcE2nYwEAcN1Q0uBTzianqt+s9Vqx+7jK126s7uE1NHLY6woM5J8yACBn4ScbfMbKqANq36OvkgMLaOiw4RrQ4n4FBnDGHgCQM/ETDl4vOTVd/d+dpbsa19fx9d+qbZ2yGnh3EAUNAJCjMUmDV1u757C69Hlee5fPVcESZTV9yTI91LKF07EAAHA7RhHwWt9GHVGX9xZr38qFuv/RHjq8dycFDQDgN5ikwetEHz6lfiM+1u78wape7TZ9vjFK9WsFOR0LAACPYpIGrzJh/o+qVS9Myz4YogdKJSmif2MKGgDAL1HS4BVSU1PVuf8Q9X/0PqWfOamPZszRh8910A25A5yOBgCAIzjdCcedS0lT1dubK2bzzypXr7lWRHymW8uVcjoWAACOYpIGx6Snp2v7oVNqNXaVkireqY4vjdbe376noAEAICZpcEj03v1q1b6LjhcLUbk7H9a8UYPUrGpxp2MBAOA13DpJM8a0NMbsMsZEG2OGXOT1x4wxWzI/1hhjarszD5xnrdWb709Q9Ro1FR21UcEVSmjZwKYUNAAALuC2SZoxJkDSeEn3SIqVtM4Ys9hauz3LYfskNbPWxhlj7pc0SVIDd2WCs/bHHFSbjt217ZcfVKBCLY3/aLK63VdfxhinowEA4HXcOUmrLynaWrvXWpssaY6ktlkPsNausdbGZT78VVJZN+aBg6IOndZDb81V1LqfdUeX5/XH1t/UvWUDChoAAJfgzmvSykiKyfI4VpefkvWS9J+LvWCM6S2ptySVL1/+euWDB5w4cUKvjf9cS85WUrEytfTliki1bxzsdCwAALyeOydpFxuR2IseaExzZZS0wRd73Vo7yVobZq0NK16ca5d8xZcLF6tc5eqaOGyQQm5O18J+d1DQAABwkTtLWqykclkel5V06MKDjDEhkqZIamutPeHGPPCQhIQEtevUTY8+3FapuQuo37uzteilB1Tu5vxORwMAwGe483TnOklBxphKkg5K6iSpS9YDjDHlJS2Q1NVau9uNWeAhcWeSVLVGbR2P3a9STR7V/Clj1ahqSadjAQDgc9xW0qy1qcaYZyR9KylA0lRrbZQxpm/m6x9Jel1SUUkTMi8gT7XWhrkrE9wnJSVF6w6c1msR22RrtdGjT9XV5JcfU6EbcjsdDQAAn2SsvehlYl4rLCzMRkZGOh0DWaxd+5vaPdpFafU6qkJYc73/aB3dGVTM6VgAADjOGLM+uwMotoVCtiUnJ2vAi4PV6I479GfcadUNKqMVL4ZT0AAAuA7YFgrZsnXrVrXp0Fl/7I7STSF3a+Tod/XkXcEKDKD3AwBwPVDScNXiEpM1cEKEYmIPqmHvEZo7YgDv3AQA4DqjpMFle/bs0edLf9a8E6V1ulBdvT3nRw1qXUe5crFrAAAA1xslDVeUnp6uUe9/oNdfGaL0PAXU4vU5mv1UQwWXucnpaAAA5FiUNFzWgQMH9OCjj2vz2lXKd2uo+r8+WkM7NdGNefmnAwCAO/GTFpcUuXO/7gytpeSUVIV0eklfvPeqqpcq5HQsAAD8AiUNf3P27Fl9uemYhn+zQ4WadFPn9m00uue9yhPIOzcBAPAUfuri/5k9Z66KlS6vIRPnKbRCEW2d+67GPtWSggYAgIfxkxeSpJMnT6pN+0f1WOeOSstXRA83rKpZTzbQLYVucDoaAAB+idOd0NKlS/V49546cfxPlWrRTTPHjdBdNUs7HQsAAL9GSfNz1lp9OO97xafnUb1nxitiaFduTAsAgBegpPmpFSt+0ortsVqXWl7bbm6qXu900PtdbtcNuQOcjgYAAMQ1aX4nKSlJAwcOVPMWzTVy+JuKT0rRW+1ra3zXBhQ0AAC8CJM0P7Ju3Tp169ZNO3fu1I11W6vXwFf07mMNFcC2TgAAeB1Kmp/YsmWLGjVqpII3F1fZzm+qfEgj/bNdXQoaAABeipKWwyUkJKhgwYIqXKaybrm3jwKqNlXjGhX0fsc6KlGQ22sAAOCtuCYth0pLS9OoUaNUoUIFjZ2/Uq3H/ax8dVprbPfG+rx3Q5W8iYIGAIA3Y5KWA0VHR6t79+5as2aNKoU11zs/xaphjYoa8XCIqpS40el4AADABZS0HGbixIl68cUXlSswt0q1fUkBNcL1VJNKevHeasodwOAUAABfQUnLYTZt2aayNUKVWL+XbqtcURMfD2V6BgCAD6Kk+ThrrWbMmKGqVasqNndZbSzVRufvul9ta5XWsLY1VfTGvE5HBAAA2UBJ82FHjx5V7969tXjxYlVv2kZJjfqoesmCmtQzRHXKFXY6HgAAuAaUNB81f/589e3bV/EJCSrbsrfO1mqtfuGV9eK91bj3GQAAOQAlzQctWrRIHTp0UIVqwSr8yHDdULyCZj7ZgOkZAAA5CCXNh5w4cUJFixbV7U3uUqNuQ3SwREPVrVJCozuEqELRAk7HAwAA1xH3ZPABCQkJ6tu3r2rUqKFZy7eq5bjVOl62qd54uLa+6N2QggYAQA7EJM3LrVy5Uj169ND+/ftV477H9Mo30bq1ZBF93DVUVW8p6HQ8AADgJkzSvFRqaqpeeOEFhYeH61xquir3fEfJ9broH21CtGxgUwoaAAA5HJM0LxUQEKB9+/apZYeuiirXRkWLFtH0J+qrWknKGQAA/oBJmhdJSUnRsGHDFB0draSUNIX1Gqbttz6qOpVKan6/OyhoAAD4ESZpXmLbtm3q1q2bNm7cqM0Hzyim/L06lnBeD9YurZHtayl/HpYKAAB/wiTNYWlpaRo1apRCQ0O1/0CManUfpvVFmqlC0fya26eRxnWuS0EDAMAP8dPfYWPHjtXgwYNVtX4Lna3/hHIVL64P2garTe3STkcDAAAOoqQ5wFqro0ePqmTJkqrSpJ0qdYzTuQoN1KNRRQ2+v7puzMuyAADg72gDHhYTE6NevXppz+/7FPLsx9p8JElB9e/W0DY1dWdQMafjAQAAL0FJ8xBrrWbOnKkBAwboXHKKCjZ7QrtPnNcrrW5Tz8YVFRjA5YEAAOB/KGkeEB8fr+7duysiIkLFqtRWgRbPqGlosMZ1rqviBfM6HQ8AAHghSpoHxCak6bddMSrS/AmVatJBg1vVUJf65WWMcToaAADwUpQ0N4mLi9Mzg16WrfuI1hxKUWCboXrlrqp6Orwyt9QAAABXRFtwg0VfL1HX7j2VcOqESieU0IAnu6p7o4oqedMNTkcDAAA+gpJ2HZ05c0adn+yvr7+YodxFy6vzmzM05pmHVaIg5QwAAFwdStp1EnPyrFp1fELbvp+ncs06avLYUbqvdnmnYwEAAB9FSbtGpxIS9d5XGzRra7zSbmur3vc+qHEDOytvYIDT0QAAgA+jpGWTtVZTFn6v559+Smm5C6jbW5/q1dbNVb5ofqejAQCAHIA7qGbDH3/Gq377PurdoaVSzyXqtdde1aRut1PQAADAdcMk7SqcS0nTyC9/1tsvPKlzR6IVeldbfTV7ikqVYDsnAABwfVHSXJCebvX11sMa/e1O/XEkTjcVzK8xI2erT/fOTkcDAAA5FKc7r2DFrmNq/M/Z6vJ4V+W1qZr9dDMd3rWJggYAANyKSdolnEtJ07CvovTxxx/r1PKpuiFvHg1rWkh3BHFqEwAAuB8l7SJ+2v2nBk79QTu+GKVz+zfq7nvu0bSpU1W2bFmnowEAAD9BScsiPd1qwopovfPdbsUvfE86uksTJ05Unz592AwdAAB4FCUt0+HTSXrsg2Xa82ei2tSvqn7dZypfnkBVrlzZ6WgAAMAPUdIkzfxlvwa/O0VHl3ygBneGa/yYCCZnAADAUX5d0o7Fn9OgmasVMXG4EqOWq3pwbU1+/y0KGgAAcJzf3oLjjxOJeuD16Zrzj45K2rFSr7z2mrZsWKeaNWs6HQ0AAMD/Jml/vTlg/PLfFZCniIKrV9WUCeMUFhbmdDQAAID/8ptJmrVW30UdUYPnPtSQAX0UVDyfFr/USpt+W0NBAwAAXscvJmmxcWf10pxILZk2RvGREbqldDl90LaiKhS/0eloAAAAF5WjJ2nnU9M0bfU+3fniFC14/XHFr1uop57qreidUapQoYLT8QAAAC4pR07STp9N0Sc/79WMX/9Q3JlzOrXkPRXJnabpS5fqvvvuczoeAADAFeWoknY0/pwmrvhdX0bG6NSh/WpUp5oGdKqrm7t9rTJlyqhIkSJORwQAAHBJjilpizYd1OD5W3QuOUVlY5crev5EBRUfqKZVm0sq7nQ8AACAq+LzJe3I6XN6a8kOLd58SLfmOaOEn8Zq9dpf1K5dOw0cONDpeAAAANnisyXtZGKy5q+P1bgf9uhsSpqa5N6nhe8NUWBgoGbMmKHHH3+cnQMAAIDP8rmSlpKWrhe/3KyIjQeVmm51R+WieqNdsFJPVlb8lmX68MMPVa5cOadjAgAAXBNjrXU6w1UpX62WzfXQSD0SWkbFjqxT9JbfNGnSJKZmAADA6xhj1ltrs3XXfLfeJ80Y09IYs8sYE22MGXKR140xZlzm61uMMfWu9GemWyslndbvnw/TkAG9tWPHDiUmJrrnLwAAAOAQt53uNMYESBov6R5JsZLWGWMWW2u3ZznsfklBmR8NJE3M/O8lJcafVsKUfjqcmqRRo0Zp0KBBCggIcM9fAgAAwCHuvCatvqRoa+1eSTLGzJHUVlLWktZW0gybcc71V2NMYWNMKWvt4Uv9oaeOHVLBMlX0y9IFqlmzphvjAwAAOMedJa2MpJgsj2P19ynZxY4pI+n/lTRjTG9JvTMfnk+I3b0tODj4+qaFpxSTdNzpEMgW1s63sX6+jfXzXdWy+4nuLGkXu5L/wncpuHKMrLWTJE2SJGNMZHYvwIPzWD/fxdr5NtbPt7F+vssYE5ndz3XnGwdiJWW9F0ZZSYeycQwAAIDfcWdJWycpyBhTyRiTR1InSYsvOGaxpG6Z7/JsKOn05a5HAwAA8BduO91prU01xjwj6VtJAZKmWmujjDF9M1//SNISSa0kRUs6K6mnC3/0JDdFhmewfr6LtfNtrJ9vY/18V7bXzuduZgsAAOAP3HozWwAAAGQPJQ0AAMALeW1Jc8eWUvAMF9buscw122KMWWOMqe1ETlzcldYvy3G3G2PSjDEdPJkPl+fK+hljwo0xm4wxUcaYnzydERfnwvfOm4wxXxljNmeunSvXccMDjDFTjTHHjDHbLvF6tjqLV5a0LFtK3S+phqTOxpgaFxyWdUup3srYUgoOc3Ht9klqZq0NkfSGuCDWa7i4fn8d97Yy3hgEL+HK+hljCkuaIOlBa21NSY94PCj+xsWvvf6Stltra0sKl/Ru5t0T4LxPJbW8zOvZ6ixeWdKUZUspa22ypL+2lMrqv1tKWWt/lVTYGFPK00HxN1dcO2vtGmttXObDX5Vxfzx4B1e+9iTpWUnzJR3zZDhckSvr10XSAmvtAUmy1rKG3sGVtbOSChpjjKQbJZ2UlOrZmLgYa+1KZazHpWSrs3hrSbvUdlFXeww872rXpZek/7g1Ea7GFdfPGFNG0kOSPvJgLrjGla+/qpKKGGNWGGPWG2O6eSwdLseVtftQ0m3KuOn7VknPWWvTPRMP1yhbncWd20Jdi+u2pRQ8zuV1McY0V0ZJu9OtiXA1XFm/MZIGW2vTMn6hhxdxZf0CJYVKuktSPkm/GGN+tdbudnc4XJYra3efpE2SWkiqLGmZMWaVtTbe3eFwzbLVWby1pLGllO9yaV2MMSGSpki631p7wkPZcGWurF+YpDmZBa2YpFbGmFRrbYRnIuIyXP3eedxamygp0RizUlJtSZQ0Z7mydj0ljbQZNziNNsbsk1Rd0m+eiYhrkK3O4q2nO9lSynddce2MMeUlLZDUld/evc4V189aW8laW9FaW1HSPEn9KGhew5XvnYskNTHGBBpj8ktqIGmHh3Pi71xZuwPKmIDKGHOLpGqS9no0JbIrW53FKydpbtxSCm7m4tq9LqmopAmZ05hUa22YU5nxPy6uH7yUK+tnrd1hjFkqaYukdElTrLUXvW0APMfFr703JH1qjNmqjNNng621xx0Ljf8yxnyujHfcFjPGxEoaKim3dG2dhW2hAAAAvJC3nu4EAADwa5Q0AAAAL0RJAwAA8EKUNAAAAC9ESQMAAPBClDQAfsEYk2aM2ZTlo6IxJtwYc9oYs9EYs8MYMzTz2KzP7zTGvON0fgD+xyvvkwYAbpBkra2T9QljTEVJq6y1DxhjCkjaZIz5OvPlv57PJ2mjMWahtXa1ZyMD8GdM0gBAUuY2SeuVsSdi1ueTlLFf4hU3QwaA64mSBsBf5MtyqnPhhS8aY4pKaigp6oLni0gKkrTSMzEBIAOnOwH4i7+d7szUxBizURlbJI3M3IonPPP5LcrYH3GktfaIB7MCACUNgN9bZa194FLPG2OqSvo585q0TZ4OB8B/cboTAC7DWrtb0ghJg53OAsC/UNIA4Mo+ktTUGFPJ6SAA/Iex1jqdAQAAABdgkgYAAOCFKGkAAABeiJIGAADghShpAAAAXoiSBgAA4IUoaQAAAF6IkgYAAOCF/g+zmJUNPCUSpgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import torch\n", + "\n", + "from sklearn.linear_model import LogisticRegression\n", + "\n", + "lr = LogisticRegression(random_state=13)\n", + "lr.fit(dataset.data.view(-1, 120), dataset.targets)\n", + "preds = lr.predict_proba(val_dataset.data.view(-1, 120))\n", + "\n", + "from sklearn.metrics import roc_curve, roc_auc_score\n", + "\n", + "fpr, tpr, _ = roc_curve(val_dataset.targets, preds[:, 0])\n", + "\n", + "print(roc_auc_score(val_dataset.targets, preds[:, 0]))\n", + "\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "plt.figure(figsize=(10, 7))\n", + "plt.plot(fpr, tpr)\n", + "plt.plot([0, 1], [0, 1], 'k--')\n", + "plt.xlabel('FPR')\n", + "plt.ylabel('TPR')\n", + "plt.xlim([0, 1])\n", + "plt.ylim([0, 1])\n", + "plt.title('ROC curve of logistic regression baseline model');" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 100 candidates, totalling 500 fits\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Using backend LokyBackend with 12 concurrent workers.\n", + "[Parallel(n_jobs=-1)]: Done 26 tasks | elapsed: 6.1min\n", + "[Parallel(n_jobs=-1)]: Done 176 tasks | elapsed: 33.3min\n", + "[Parallel(n_jobs=-1)]: Done 426 tasks | elapsed: 76.2min\n", + "[Parallel(n_jobs=-1)]: Done 500 out of 500 | elapsed: 88.2min finished\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.5017980159110792\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.model_selection import RandomizedSearchCV\n", + "from scipy.stats import loguniform, uniform\n", + "\n", + "params = {'C': loguniform(1e-3, 1e1),\n", + " 'l1_ratio': uniform(),\n", + " }\n", + "\n", + "lr = LogisticRegression(random_state=13, solver='saga', penalty='elasticnet')\n", + "\n", + "cv = RandomizedSearchCV(lr, params, random_state=3, n_iter=100, n_jobs=-1, verbose=1, scoring='roc_auc')\n", + "cv.fit(dataset.data.view(-1, 120), dataset.targets)\n", + "\n", + "preds = cv.best_estimator_.predict_proba(val_dataset.data.view(-1, 120))\n", + "\n", + "fpr, tpr, _ = roc_curve(val_dataset.targets, preds[:, 1])\n", + "\n", + "print(roc_auc_score(val_dataset.targets, preds[:, 1]))\n", + "\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "plt.figure(figsize=(10, 7))\n", + "plt.plot(fpr, tpr)\n", + "plt.plot([0, 1], [0, 1], 'k--')\n", + "plt.xlabel('FPR')\n", + "plt.ylabel('TPR')\n", + "plt.xlim([0, 1])\n", + "plt.ylim([0, 1])\n", + "plt.title('ROC curve of logistic regression baseline model');" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "LogisticRegression(C=0.02305440604242659, class_weight=None, dual=False,\n", + " fit_intercept=True, intercept_scaling=1,\n", + " l1_ratio=0.06467319799028326, max_iter=100,\n", + " multi_class='auto', n_jobs=None, penalty='elasticnet',\n", + " random_state=13, solver='saga', tol=0.0001, verbose=0,\n", + " warm_start=False)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cv.best_estimator_" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 100 candidates, totalling 500 fits\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Using backend LokyBackend with 12 concurrent workers.\n", + "[Parallel(n_jobs=-1)]: Done 38 tasks | elapsed: 1.7min\n", + "[Parallel(n_jobs=-1)]: Done 188 tasks | elapsed: 9.2min\n", + "[Parallel(n_jobs=-1)]: Done 438 tasks | elapsed: 22.1min\n", + "[Parallel(n_jobs=-1)]: Done 500 out of 500 | elapsed: 25.1min finished\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.5018716279161413\n" + ] + }, + { + "data": { + "image/png": "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RdNdQAOFNBEREUkhpi9eTr8nn8DkLs5zk79m88J3qVwoh7vLcht1d4qIiIhb7du3j9DYbLy3zYsSXd5k9rC+PFgun7vLcju1pImIiIhbnD17li5dulChYiUC3v+awjkysfqjwQpoTmpJExERkWT3/fff06t3b06ePEXWep3xr1KOT568j0w+qf/C6ElFLWkiIiKSbKy19OvXj+bNmxNBJvJ1f4++AwazqN/9CmgJqCVNREREko0xhnPRnuS5vyO56nflnY41aO1XyN1lpUgKaSIiIuJSly9f5rXXXqNNmzYc9CnGutyPUK1SViZ3vZcy+bK6u7wUSyFNREREXGb9+vUEBASwe/dutp2J5Z8CTWlSMR8fPH6vujdvQWPSREREJMlFRUXx+uuvU69ePSIiImjzymT+KdCUzjWLMLVbDQW026CWNBEREUlyCxYsYMSIETzetTsR93Zl08kYnm5QipceLu/u0lINhTQRERFJErGxsfzzzz9UqFCBHj16QJY8fLQ7I2GnoxjbvirtaxR2d4mpikKaiIiI/Gd79uyhR48e7N69mz179nDgomH8dm98vCxf97+PyoWyu7vEVEdj0kREROSuxcXF8dFHH+Hn58fOnTsZP3EiCzad5vHp68ia0ZvP+tZVQLtLCmkiIiJyVy5fvkyzZs145plneOCBB9i4eQvfXSrFez/toV6pXHzzzH2UzJPF3WWmWuruFBERkbuSKVMmihUrxrRp02j3eAB9P9nIxkPnGNqiAr3vL4Exxt0lpmpqSRMREZHbdvz4cTp27MjOnTsBmDlzJi06dqfdlD/ZEhrG+I5+PFG/pAJaElBIExERkdvyxRdfULlyZb755huCg4MB2HfqIm0/WsOhs5eY27MWbarrEk9JRSFNREREEnXu3Dm6du1Khw4dKFGiBJs2baJz587MXB3Co5P+IDo2jkV96lCvdG53l5qmaEyaiIiIJGrChAl89tlnvPXWWwwZMgQPTy+GfLmFRX8fpnz+rHzU9V5K6QCBJGeste6u4Y74+/vboKAgd5chIiKSpoWHhxMaGkqFChW4fPkyu3fvxs/PjwOnIxj0eTAbDp6j130leKV5ebw91TF3M8aYDdZa/7t5rFrSRERE5Bq///47gYGBeHl5sXPnTjJlykTVqtWYuTqE93/6By8Pw5j2VelQo7AOEHAhRV8REREBHOc9e+GFF2jYsCGenp7MmTMHLy8vzly8Qo/Z6xnx7U4qF8zO9wMfoKN/EQU0F1NLmoiIiHD06FEaNWrErl27ePrppxkzZgy+vr6s3XeaAZ9uIjwyhjdaViSwXnGFs2SikCYiIiLky5eP6tWrM2nSJJo0aUJcnOW9H3cz+bd9FM2ZmTk9a+nyTslM3Z0iIiLp1LZt22jSpAnHjx/H09OThQsX0qRJE/adukibyWv44Ne9tKxagKXP6ALp7qCQJiIiks7ExsYyZswYatSoQXBwMPv27QMgLs7yedBh2k1eS+i5y4xuV4XxnfzIltHbzRWnT+ruFBERSUf27t1Ljx49WLt2Le3atWPq1KnkyZOH3cfDee2rrQQdPEe1IjmY0MmPErl93V1uuqaQJiIiko68/fbb7Nixg08++YQuXbpgjOGb4KMM/WorFhjZtjJdahXVwQEpgE5mKyIiksYdPnyYqKgoSpUqxZkzZ4iMjKRQoULExMYxdsVupq0K0ZUDXOS/nMxWY9JERETSKGstc+fOpXLlyvTp0weAXLlyUahQIfaeDKf7rPVMWxVChxqFWfbs/QpoKYy6O0VERNKgEydO0LdvX5YuXUr9+vWZMWMGAOcvR/Pmsu0s2XiELBm8GN2uCo/XKurmauVGFNJERETSmE2bNtG0aVPCw8MZN24cAwcOxMPDg6Wbj/DO97s4fiGSJ+uX4Mn6JcmbLaO7y5WbUEgTERFJY8qXL0+TJk0YOnQoFStWZPfxcF7+cgubD4dRKEcmvuhXlxrFcrq7TLkFjUkTERFJA3744QcefPBBLl68SKZMmVi4cCE+uYvSd34QzSasYu/Ji4xsW5nfBjdQQEsl1JImIiKSioWHhzN48GCmTZtGpUqVOHHiBD4ZMzP06618viEUbw8POvkX4eVHypPT18fd5codUEgTERFJpVatWkVgYCAHDhxg8ODBvPXWWxwIi6LT9D/ZdCiMVtUK8mrzCuTPrnFnqZFCmoiISCpkrWXYsGF4eHiwevVq6tWrx9ebj/Dqkm1k8PZgYmc/WvsVcneZ8h8opImIiKQif//9N0WKFCF//vwsXLiQbNmyceIytJm8luDDYfgVycHUbjXUepYGuPTAAWPMw8aY3caYvcaYITeYn90Ys8wYE2yM2W6M6enKekRERFKrqKgohg0bRt26dRk6dCgAefPl57PNp2g2fhXBh8MY2bYyS56qp4CWRrisJc0Y4wl8BDQBQoG/jTHfWGt3xFusP7DDWtvSGJMH2G2MWWCtjXJVXSIiIqnNtm3bCAgIYNOmTXTv3p1x48ax4+gFXvlqK8GHw6hTMidvtqpMufxZ3V2qJCFXdnfWAvZaa0MAjDGLgNZA/JBmgazGcRXXLMBZIMaFNYmIiKQqy5Yto3379mTPnp0lS5bQunUbFqw/xFvLtuPpYXi/YzXa3VvY3WWKC7gypBUCDsebDgVqJ1jmQ+Ab4CiQFehkrY1LuCJjTB+gD0DRorp0hYiIpH3WWowx1K1bl+7duzNq1CgiPHzpOvMv/gw5Q92SuZjQ2Y98umJAmuXKMWnmBvfZBNPNgM1AQcAP+NAYk+26B1k73Vrrb631z5MnT9JXKiIikkJYa5k8eTKNGjUiJiaG3Llz8/6HU1i89TzNxq9iw8FzvNGyIp88UVsBLY1zZUtaKFAk3nRhHC1m8fUE3rHWWmCvMWY/UB5Y78K6REREUqTDhw/Tu3dvfvrpJ5o1a0Z4eDihER48tWADoecu06xSPt5qXVnhLJ1wZUva30AZY0wJY4wP0BlH12Z8h4BGAMaYfEA5IMSFNYmIiKQ41lrmzp1L5cqVWbt2LVOnTuWb5d+ycPMZ2k9dS2R0LJ/0rs207v4KaOmIy1rSrLUxxphngBWAJ/CxtXa7Maafc/5U4G1gjjFmK47u0ZettaddVZOIiEhKFBUVxejRo6latSpz5swhV4EidJu5nvUHztKgXB7GPFaVvApn6Y5x9DSmHv7+/jYoKMjdZYiIiPxny5Yto2HDhmTJkoUjR46QP39+Nh4+z6DPgjl2/jJvta7M47V0wFxqZozZYK31v5vHuvRktiIiInK9c+fO0a1bN1q1asWkSZMAyJOvABN/2UunaX8SZy0Ln6yjgJbO6bJQIiIiyeiHH36gd+/enDx5kuHDhzN48GBOXIjkiblBbD1ynrbVC/Fm60pky+jt7lLFzRTSREREksnEiRMZOHAgFStW5JtvvqFGjRp8uSGU15duIybWMunx6rSqVtDdZUoKoZAmIiLiYrGxsXh6evLoo49y/Phx3njjDWKMF0/OC+KnHScokzcL4zv5UblQdneXKimIDhwQERFxkcjISF577TVCQkJYsmQJjqsgwsZD53jtq238cyKcvg+U5PkmZfH21DDxtOi/HDigljQREREXCAoKIiAggJ07d/L0008TExPDxSjLO9/v4rMNh8mZ2YeZAf40LJ/X3aVKCqWQJiIikoSio6MZMWIEI0eOJH/+/KxYsYLGjZuwYP0hRn67g8joOLrXKcagpmXJkdnH3eVKCqaQJiIikoQuXLjAtGnT6NKlC5MmTeJ4pAedp69j/YGzlMmbhYmdq1Ox4HWXqRa5jkKaiIjIfxQbG8v8+fPp1q0buXLlYsuWLfhmz8nk3/Yy5bd9ZPbx4t3HqtC+RhE8PYy7y5VUQiFNRETkP9i7dy+BgYGsWbOGzJkz06FDB7afg7fm/cH+0xG09ivI8JaVuMdXXZtyZxTSRERE7oK1lqlTp/Liiy/i7e3NvHnzaNqiDY/PWMe6kLMUzZmZOT1r0qCcDgyQu6OQJiIichf69+/PlClTaNq0KbNmzeJErC+PfvgHoecu83zjsjzVoBQ+Xjqthtw9hTQREZHbZK0lJiYGb29vAgMDqVKlCi06BvD+z3tYsimYezJ7M7nrvTSvUsDdpUoaoJAmIiJyG06ePEm/fv0oUKAAH330EVX8arD4QAYajPuNOAt9HijJsw+VJquuuSlJRCFNRETkFpYsWULfvn0JDw9n5MiR/H3gLC9+HszBM5d44v4S9Ly/BIVyZHJ3mZLGqLNcRETkJs6dO0f37t157LHHKFq0KEFBQeSt9xgdpv7JpahYFjxRm6GPVlRAE5dQSBMREbmJs2fPsmzZMoYPH86yn35nwobLvL50O3VK5mRp//u4r3Rud5coaZhCmoiISDwXL15kypQpWGspVaoU+/fvp2TTHjzywVp+3nmSF5qUZeETdSio1jNxMY1JExERcVq9ejWBgYHs37+fmjVrUsWvOsNXHGDp5qP4F7uHkW2rUC5/VneXKemEWtJERCTdi4yMZPDgwTz44IMA/P7775z3LUL9d1eydPNR+j5QksV96yqgSbJSSBMRkXSvRYsWjBs3jr59+7J582a2xhag99wgMnh7MLtnTV5pXkHX3JRkZ6y17q7hjvj7+9ugoCB3lyEiIqlcdHQ0xhi8vLz44YcfMMZQvd6DvLF0O99vO86jVQvwXsdqZPDydHepkooZYzZYa/3v5rFqSRMRkXRn+/bt1KlTh7FjxwLw8MMPk7V0DZqOX8WK7cd5sWlZJnauroAmbqUDB0REJN2IjY1l/PjxDB06lGzZslGhQgWOnb/MpF/28On6w+TLloEVAx+gTD6NPRP3U0gTEZF0Yd++fQQGBvLHH3/Qpk0bJk+ZyurQKBq/9zsRUbH0vK84AxuVJXtmXdZJUgaFNBERSRdOnz7Nzp07mTdvHkVqNaPnol3sOh6OX5EcjG5XhQoFsrm7RJFraEyaiIikWaGhoUyZMgWA2rVr8+vf21hrKhI4+2/OXYrirdaVWPJUPQU0SZHUkiYiImmOtZZPPvmEZ599lpiYGFq3bs3CreFMW7UPTw/Dsw+Vpu+DpciSQV+DknLp3SkiImnKyZMn6devH1999RX33XcfY8CV5G8AACAASURBVD+YxsBvDrL+wFkeKJuHce2rkjdbRneXKXJLCmkiIpJmREdHU6dOHY4cOcLYsWOp9kgX+ny2lVhrGdm2Ml1qFcUYnZRWUgeFNBERSfXCw8PJkiUL3t7ejB07Fs97CvFtqBcfzt9EoRyZmNOzpk6rIamODhwQEZFUbcWKFVSoUIH58+cTF2fZ4lWO5386w6p/TjHgodL8MuhBBTRJldSSJiIiqdLFixcZPHgwU6dOpUKFCpQqW47+Czfy/bbjNKuUj3faVeUeXx93lyly1xTSREQk1Vm7di3du3dn//79DBo0iKqt+jDo18McvxBJr/tKMKxlRXeXKPKfKaSJiEiqc+rUKcdpNr76jmUncvDFd3sokzcL73WszX2lc7u7PJEkoZAmIiKpwoYNG9iyZQs9e/akZctWHPEty7trDhMVE8aAh0rzbKMyeHtqqLWkHQppIiKSokVHRzNq1ChGjBhBkSJFKH/fIwxdtot9pyKoXyY3o9pWoUjOzO4uUyTJKaSJiEiKtWPHDgICAtiwYQOPd+lKkRZP02X2BvJkycD7HavRtnohnfdM0iyFNBERSZFOnTpFzZo18fX1ZeSHs/npcnHWbjlHa7+CvNWqMtkze7u7RBGXUkgTEZEU5ezZs+TMmZM8efIwavyHbI4twvSDVyia0zK/dy3ql8nj7hJFkoVCmoiIpAjWWqZOncpLL73EZ198SYhPSaaFFgBieLpBKZ59qAyZfDzdXaZIslFIExERtwsNDaV37978+OOP1KnfgDd+P8vJuGjql8nNmPZVKZA9k7tLFEl2CmkiIuJWixYtol+/fkRHRzPm/Yl8eLwk2by9mdqhKg9XLuDu8kTcRieUERERtzp79iyVK1dmzfogdt5TF2MMEzr7KaBJuqeWNBERSXZff/010dHRdOjQgaeeeoqmj3Wj7ycb2Xcqgucbl+Wh8nndXaKI26klTUREkk1YWBgBAQG0bduWKVOmEBcXx+cbQmk/bR1nIqKY3bMmzzUuo3OfiaCWNBERSSY//vgjvXr14vjx47zxxhv07P8CXWb+xbqQs1QokI0pXe+leG5fd5cpkmIopImIiMtt2bKFZs2aUaFCBb7++mtCbD4eGv8HGbw8GN6yIgF1i+PhodYzkfgU0kRExGWOHz9O/vz5qVq1KgsXLqRB0+YM/24PK7ZvoXrRHLzTrirl8md1d5kiKZLGpImISJKLjIzkpZdeokSJEmzduhWAojWb0HZaECu2n+C5RmX4vG9dBTSRRKglTUREktTGjRsJCAhg+/bt9O3bl3wFizB2xS6m/LaPAtkzsfDJ2tQrldvdZYqkeAppIiKSZEaOHMnw4cPJmzcv33//PTnK1qTF1CBOhV+hVbWCjGpXhSwZ9NUjcjvU3SkiIknm0qVLdOrUiVXrNvDj+fx0nr4Oay1ze9Vi0uPVFdBE7oA+LSIictdiY2OZMGECfn5+NGrUiLfffptNh8Po9skmToVfoc8DJenfoDTZM3u7u1SRVEctaSIicldCQkJo2LAhL774Il9++SXWWhb9HUqnaesIuxTNJ0/U5tXmFRTQRO6SWtJEROSOWGuZPn06gwYNwtPTk7lz51K3WVuemBvEL7tOUrtETqZ0q0FOXx93lyqSqqklTURE7sjSpUvp168fdevWZVPwFkJy1KDJ+FWs3nuawc3K8emTdRTQRJKAWtJEROSWrLUcPHiQ4sWL06pVK7788kvK1HqIl5fv4O8D5+hWpyjPNSpLnqwZ3F2qSJqhljQREUnUqVOnaN++PX5+fhw9epToOMt2n/K0+mgN249eYEInP0a0qaKAJpLE1JImIiI39fXXX9OnTx/Onz/P22+/zd5wT55a8ifBoefp6F+YIY9UUNemiIuoJU1ERK4TExNDjx49aNu2LYULF2b1n39xvFhTAmYHcfDsJSZ29mNM+2oKaCIupJY0ERG5jpeXF15eXrz++ut0fPI5nvo0mKNhkTzdoBQDG5fFx0u/8UVcTSFNREQAiIiIYMiQIfTp04cqVaowc+ZMth45zxPzNnD8QiQLnqjNfaV1zU2R5KKQJiIirFmzhh49ehASEkKZMmUoU74iby3fwaL1h8jp68PMAH8FNJFkppAmIpKORUZGMmzYMMaNG0fx4sVZuXIlparWpNM0x8EBnfyL6KoBIm6iQQUiIunY5MmTGTt2LE8++SR/BW1kU3QBHpmwmj0nL/Jeh2q8276qApqIm6glTUQknYmOjubgwYOULl2a/v37U716dc5kK0PjD9Zz/nI0Dcvl4bUWFSmdN4u7SxVJ11zakmaMedgYs9sYs9cYM+QmyzQwxmw2xmw3xvzuynpERNK7HTt2UK9ePR566CEuXbpElPVg5YU8vPh5MFkzejGrhz+ze9ZSQBNJAVzWkmaM8QQ+ApoAocDfxphvrLU74i2TA5gMPGytPWSMyeuqekRE0rO4uDgmTJjAq6++SpYsWZgyZQqbj15iyJKtHDt/mS61i/JGy4pk8PJ0d6ki4uTKlrRawF5rbYi1NgpYBLROsEwXYIm19hCAtfakC+sREUmXwsLCaNiwIYMGDaJZs2asWP03y8KL0WXmX1yJiWVur1qMaltFAU0khXHlmLRCwOF406FA7QTLlAW8jTG/AVmBidbaeQlXZIzpA/QBKFq0qEuKFRFJq7Jly0aePHmYMfNjokrW54nP93AlJo4hj5QnsF5xMnornImkRK5sSTM3uM8mmPYCagAtgGbA68aYstc9yNrp1lp/a61/njx5kr5SEZE05siRI3Tq1InQ0FCMMXQaMp7Zp4oxZsVuyufPxldP30e/B0spoImkYK5sSQsFisSbLgwcvcEyp621EUCEMWYVUA34x4V1iYikWdZaFi5cyDPPPMOVK1do3rYDP10swh97T1M+f1bm9arFA2X1Y1ckNXBlSPsbKGOMKQEcATrjGIMW31LgQ2OMF+CDozt0vAtrEhFJs06dOkW/fv1YsmQJderUpUGfNxizwxIZc4a321Sma62ieHjcqJNDRFIil4U0a22MMeYZYAXgCXxsrd1ujOnnnD/VWrvTGPMDsAWIA2Zaa7e5qiYRkbTszTffZPny5Qx8ZTg78zzIp7sjaF4lPy81K0/x3L7uLk9E7pCxNuEwsZTN39/fBgUFubsMEZEUISwsjLNnz1KyZEnOnj3HtO/WM/8fi4+XB688Up5ONXWwlYg7GWM2WGv97+axuuKAiEgq9dNPP9GrVy/y58/PF9//xuAvdrH+QAy1S+TkvY7VKHxPZneXKCL/ga7dKSKSykRERNC/f3+aNm2Kr28WHu03lMem/sn2o+cZ074qi/rUUUATSQPUkiYikors27ePhx9+mH379tG625OEVXqM2XtiqFggA+93qkX5/NncXaKIJBGFNBGRVKRw4cLkL1aaPM0HsDlTSQobb2b3rE6DsnkwRkduiqQl6u4UEUnhNm7cSIsWLfjn0AkGfr6Nw/7PEJWnPKPaVuH3wQ1pWC6vAppIGqSWNBGRFCo6OprRo0fz9ttv45s9J03e+hzvvCV54v4SvNisnK4WIJLGKaSJiKRAO3fuJCAggKCgIAr7N4F6vShTrADvdahGtSI53F2eiCQDhTQRkRTo+UEvsuOfveRv+yr57m3AoKbl6FyziLo1RdIRhTQRkRRi//79eHp5s2J/FLtLdyJnycfpUL8yrzSvQJ6sGdxdnogkM4U0ERE3s9YyY8YMnn/hBXKUrYl30xepV6Usg5qWpUaxnO4uT0TcRCFNRMSNjhw5Qs9evfnpxxVkLu6H7wO9GPFYVTr4F1bXpkg6p5AmIuImv/z2O61atSIyMoqcTfrR5vFA3mpblUI5Mrm7NBFJARTSRETcYGvoeYavDocClanfoT9vdG9Mw3J53V2WiKQgCmkiIsloweIveHPMRKIaDSJfjix8v+xr6pfJra5NEbmOQpqISDIICwvj8V79+OGrxXjnLUHPUpl5p9sD3OPr4+7SRCSFUkgTEXGxeV8s56m+T3Dp3CnyP9iFJdPfo27Z/O4uS0RSOIU0EREXuRwVy/Tf9jD46WfBePPa1C8Z2rOlLuckIrdFIU1ExAU++/Znpm+NZm9YHK0Gj2d4x/uoXCyPu8sSkVREIU1EJAn9c/Qs7Z8YyNYfFpCzTjsWz/yQxhXzubssEUmFPNxdgIhIWhAZHctLU5dS1a8GW7+fj1/jtmz4cooCmojcNYU0EZH/IC7O8sm6g1TtPoyx/R/DI+oiHy/8kk0/fkHxArndXZ6IpGLq7hQRuUu7j4cz5MtgNh0+T7lK91I6piOfTP+QnDl1vU0R+e8U0kRE7sKnfx3guaGjuBK6nQkz5hN4XwmMeczdZYlIGqLuThGRO7Dv1EWe/Og7enZoyamfZ1C7eA46+OXVFQNEJMmpJU1E5DZYa1n41yEGDB/HuZWz8PHyZOasWfTq2VMBTURc4o5DmjHGE+hsrV3ggnpERFKcsEtRvPrVVpYHhXD5r8XUrV2LTz+ZR9GiRd1dmoikYTft7jTGZDPGvGKM+dAY09Q4PAuEAB2Tr0QREfeIi7PMWbOf8j1G8O3mw/RqWJHtG9ez+rdfFdBExOUSa0mbD5wD/gSeAAYDPkBra+3mZKhNRMRtgg+H8dqna1g5axSX/lnLqyPfY3irNu4uS0TSkcRCWklrbRUAY8xM4DRQ1FobniyViYi4gbWWmav38/oHczjz/QfYKxGMGjWKl156zt2liUg6k1hIi756w1oba4zZr4AmImnZiQuRvPDZZr6d+yHn/1hA5SpVWfDJfKpWreru0kQkHUospFUzxlwArh62lCnetLXWZnN5dSIiycBay5KNRxj17XYuXIll0BNduPJgcYYNG4aPj4+7yxORdOqmIc1a65mchYiIuMOJC5H0/XgNv86fQA4fy4olC6lQIBvQ3N2liUg6d9OQZozJCPQDSgNbgI+ttTHJVZiIiKut3H2SvuMWcuDLsUSfO0rPAc9RLl8Wd5clIgIk3t05F8e4tNU4flJWAjRyVkRSvQOnI5jw4w5mTxrDhfVLKFioMAuWrKRBgwbuLk1E5F+JhbSK8Y7unAWsT56SRERcw1rL4r8PM2zpdi6dO86VrT8Q2DOQiePHky2bhtmKSMpyu0d3xuiyJyKSWllr+WnHCcb/uJO/f/2Whs3b8e7A+mR6/WEKFCjg7vJERG4osZDm5zyaExxHdOroThFJdfadusirS7byR1Aw4SsmEn54F08805SSebIAGn8mIilXYiEt2FpbPdkqERFJQmGXopi+KoSPVu4hZsu3nPp1DtmyZmHx4sU0a9bU3eWJiNxSYiHNJlsVIiJJxFrLJ+sOMvGXPZyJiMJn1UccWreCRx99lBkzZpA/f353lygiclsSC2l5jTEv3GymtfZ9F9QjInLXDpyO4O3lO/h55wkqF8zCrB41OfmQD6GhnQgMDERja0UkNUkspHniGLCh/2oikqKFXYpi0i97mffnAbh0jizrZlCj6QNUK9IAijRxc3UiIncnsZB2zFr7VrJVIiJyBw6cjuDlL7ew/3QEJ8OvYK2l4uWtrJs/litXIinQo5O7SxQR+U8SC2lqQRORFCcmNo5Ffx/mzWXb8fH0oFGFfPjGXSLo07H88O1S6tSpw9y5cylbtqy7SxUR+U8SC2mNkq0KEZHbsOdEOM8t2syOYxconz8rMwL8KZIzM5s2beKD335m9OjRDB48GE9PXXpYRFK/xC6wfjY5CxERuZmomDim/b6P9376Bx9PDyZ29uPB4r4sXfo5PXr0oHr16hw8eJBcuXK5u1QRkSSTWEuaiIjbrdl7mkGfBXP8QiQPV8rP8FaV2B60hqqtenL06FHq1atHmTJlFNBEJM3xcHcBIiI3cjkqlr7zg+g68y8slgmd/HivXXlGDh1M48aNyZQpE2vWrKFMmTLuLlVExCXUkiYiKUpcnGXWH/uZsTqEk+FXePah0vRvWBofT0OtWrXYsGEDAwYMYPTo0WTOnNnd5YqIuIxCmoikGAdORzBg0Sa2hJ6nZvF7eL+jH7WKZcPbywNjDC+//DK5c+emYcOG7i5VRMTl1N0pIm5nreXbLcd4bMpadh67wGvNK/BZ37pkiQilRo0azJw5E4AOHToooIlIuqGWNBFxq70nL/Lsp5vYeewCpfNmYXHfOhTPmYmRI0fy5ptvkjt3bgoXLuzuMkVEkp1Cmoi4RVRMHJN/28vklfvI5OPJK4+Up/f9Jdi3dw/3tQxg/fr1dO7cmQ8//FBHbopIuqSQJiLJ7rfdJxn57U72nLxI04r5GNG2MnmzZgRg//797Nu3j8WLF9OxY0c3Vyoi4j4KaSKSbI6fj2TSr3tY+NchSub2ZUaAP00q5uPAgQPM/3o13bt35+GHH2b//v1kzZrV3eWKiLiVQpqIuNyJC5HMWXuAWav3ExMXR2C94gx5pDwZvDyYOXMmzz//PD4+PrRq1Yrs2bMroImIoJAmIi4UHRvHzNX7mbxyL+FXYmjjV5CBjctSPLcvx44d48knn+Tbb7+lYcOGzJ49m+zZs7u7ZBGRFEMhTURcYvWeU7zxzXZCTkVQt2Qu3m5TmdJ5swAQERFB9erVuXDhApMmTaJ///54eOiMQCIi8SmkiUiSCrsUxVvLd7Bk4xEKZs/Ih12q06JKAYwxRERE4Ovri6+vL++++y5169albNmy7i5ZRCRF0k9XEUkSUTFxzPvzAA3G/cZXm47Q877i/PjCgzxatSDGGJYtW0bp0qX57rvvAOjRo4cCmohIItSSJiL/2bYj53llyVa2HjlPjWL38FbrSlQq6Bhfdv78eZ5//nlmz55NtWrVdGJaEZHbpJAmInctPDKaCT/vYdYf+8nk7cm4DtV47N5CGGMAWLlyJYGBgYSGhvLaa68xbNgwfHx83Fy1iEjqoJAmInflq02hjFi+kzMRUXSuWYQXm5Ujd5YM1ywTEhJCxowZWbt2LbVr13ZTpSIiqZOx1rq7hjvi7+9vg4KC3F2GSLp1KSqGib/sYcaqECoVzM7rj1akVomc/87/888/CQ0NpUOHDlhruXLlChkzZnRjxSIi7mOM2WCt9b+bx6olTURu28ZD5xi4aDOHzl7ivtK5+DiwJhm8PAG4cuUKw4cPZ8yYMVSsWJF27drh6empgCYicpcU0kTklq7ExDL+pz1M/X0fWTJ4MaXrvTxSpcC/84ODgwkICGDLli307t2b999/H09PTzdWLCKS+imkiUiigg+H8dIXW9h9Ipx21QsxvHUlsmX0/nf+gQMHqFWrFjlz5mTZsmU8+uijbqxWRCTtUEgTkRuKjbO8vXwHc9YewNvTMOaxqnSsWeTf+WFhYeTIkYPixYszefJk2rRpQ65cudxYsYhI2qKT2YrIdb7YEEqT8b8zZ+0BOvkXYe2QRv8GtLi4OCZOnEjRokXZsGEDAL1791ZAExFJYi4NacaYh40xu40xe40xQxJZrqYxJtYY096V9YhI4nYcvUDf+UG8+Hkwmbw9ea9DNd5tX5U8WR2n1jhw4ACNGjVi4MCBPPDAAxQsWNDNFYuIpF0u6+40xngCHwFNgFDgb2PMN9baHTdY7l1ghatqEZHERcfGMXftAUZ/v4uMXh483aAUzzcpi7fn/3/HzZ49mwEDBmCMYdasWfTs2fPfk9aKiEjSc+WYtFrAXmttCIAxZhHQGtiRYLlngS+Bmi6sRURuYt+pi/Sbv4E9Jy9So9g9zAzw5x7f668KcPjwYfz9/Zk9ezbFixdP/kJFRNIZV3Z3FgIOx5sOdd73L2NMIaAtMDWxFRlj+hhjgowxQadOnUryQkXSI2stn6w7SItJqzl+IZIJnfz4ol/dawLa4sWLWbHC0cj96quv8ssvvyigiYgkE1eGtBv1gyS8vMEE4GVrbWxiK7LWTrfW+ltr/fPkyZNkBYqkVycuRPLcos0M/XobJXNn4bsB9WlT/f/X3Dxz5gydOnWic+fOTJ3q+A3l5eWFh4eONRIRSS6u7O4MBYrEmy4MHE2wjD+wyPnFkBtoboyJsdZ+7cK6RNItay3Lthzj9a+3ER4ZzTMNSzOwcRm84o09W758OU8++SRnzpxh5MiRvPTSS26sWEQk/XJlSPsbKGOMKQEcAToDXeIvYK0tcfW2MWYOsFwBTcQ1wi5FMeHnPcxZe4DKhbIxoVM9SufNcs0yq1atomXLllStWpUffviBatWqualaERFxWUiz1sYYY57BcdSmJ/CxtXa7Maafc36i49BEJGlYa/l8QyjjVuzmZPgVutYuyputKl3Tenby5Eny5s1L/fr1mT17Nl26dMHH5/qDB0REJPkYaxMOE0vZ/P39bVBQkLvLEEkVLl6J4dUlW/km+CgVCmRjZNvK3Fv0nn/nX7p0iSFDhjB37lyCg4N1UICISBIzxmyw1vrfzWN1WSiRNMhay487TjD8m+0cOx/Ji03L8nSD0nh4/P94nnXr1hEQEMCePXsYMGAAefPmdWPFIiKSkEKaSBqz/3QEL3y2mU2HwiifPysTO1enVomc/8631jJ06FDeeecdChcuzC+//MJDDz3kxopFRORGFNJE0oiY2Dg+WrmPj37bSwYvD4a2qEBA3eL4eF172gxjDKdOnSIwMJD333+f7Nmzu6liERFJjEKaSBqw7ch5XvtqK8Gh53m4Un6GtaxIwRyZ/p0fExPD2LFjadq0KTVq1GDKlCl4enq6sWIREbkVhTSRVOxKTCwf/rqX6atCyJLBi/GdqtHGr9A119TcvXs3PXr04K+//uLChQvUqFFDAU1EJBVQSBNJpVbuPsmwpds4fPYyDcrlYUz7quTNmvHf+XFxcXzwwQcMGTKEzJkzs2jRIjp16uTGikVE5E4opImkMlExcUxftY/xP++hWK7MzA6sScPy1x+ZOXfuXAYOHEiLFi2YMWMGBQoUcEO1IiJytxTSRFKRPSfCCZz9N0fCLtO8Sn7GdahGZp//f4yttRw5coTChQvTrVs3smTJQvv27a/p/hQRkdRBV0sWSQViYuOY8ts+2k1ey/nL0YxqW4WPutx7TUA7duwYrVq1olatWoSFheHt7U2HDh0U0EREUim1pImkcFtDzzP4i2B2HQ+nfpncjG5XhcL3ZL5mmcWLF/P0009z6dIl3nnnHbJly+amakVEJKkopImkUBFXYpj0yx6mrw4hl68PEzr50dqv4DUtY5cvXyYwMJDPPvuMWrVqMW/ePMqVK+fGqkVEJKkopImkQOv3n+XpBRs5ffEKrf0K8nabymTL6H3dchkzZiQqKoqRI0fy0ksv4eWlj7SISFqh/+giKUhMbBxz1h7gne93UfieTEzoVJv7y+S+ZpkLFy7wyiuvMHjwYIoXL86SJUs07kxEJA1SSBNJIbYdOc+LnzvGnj1QNg8fPF6d7JmubT1buXIlgYGBhIaG4u/vT8+ePRXQRETSKIU0ETez1vLhr3uZ8Mse7snsc8OrBly6dIlXXnmFSZMmUaZMGdasWUOdOnXcWLWIiLiaQpqIG+07dZHR3+3k550nqVHsHiZ08qNIzszXLTdq1CgmTZrEgAEDGD16NJkzX7+MiIikLQppIm4QGR3L9FUhfLRyLx7GMOSR8vSpXxIPj/+3nkVFRXH8+HGKFi3Kyy+/TOPGjWnQoIH7ihYRkWSlkCaSzDYcPMfgL4IJORVB4wp5GdWuyjXX3AQIDg4mICCA2NhYNm/eTNasWRXQRETSGYU0kWQSF2eZvjqE937cTd6sGZnbqxYPls1zzTIxMTGMGTOG4cOHkzNnTmbMmKHTaoiIpFP67y+SDM5GRNF/wUb+DDlDk4r5GNm28nWtZydOnKBNmzasW7eODh06MHnyZHLnzn2TNYqISFqnkCbiYl9uCGXY0m1ExsQxsm1lutQqesPTZuTMmZOsWbPy6aef0qlTJ51aQ0QkndMF1kVcJDbOMn3VPgZ9Hkz2TN4seKI2XWsXuyZ8HTx4kMcff5yzZ8/i7e3NihUr6Ny5swKaiIgopIm4QvDhMNp8tIZR3+2iTsmcrHj+AeqUzPXvfGsts2bNokqVKixfvpzg4GAAhTMREfmXujtFkthXm0J5fnEwuXxvfGLaY8eO0adPH5YvX06DBg2YPXs2xYsXd1/BIiKSIimkiSSRmNg4Rn+/i1l/7KdWiZxM61aDe3x9rltu0KBB/Pzzz0yYMIFnn30WDw81aIuIyPWMtdbdNdwRf39/GxQU5O4y/tfefUdXVSVsHP7thJAgJZQAhtCL0mtQQETATw1FenAAE6qIGBwVpIiKbUaq6CCCCA4WHBWkigpWBAOYADGR3qv0DAlCSNvfH8kgSAuBm3Nv8j5rsVy55+Su17UJvOx97t4iF9l+JJFR8+OI3htPrzvLM+bBWuTP92f5OnHiBElJSQQFBXHo0CESEhKoXr26g4lFRCQnGGPWWWuDs/O9+ie8yA36fssRQt9ZzdYjiYzrWod/dK5zUUFbunQptWvXpl+/fgCUKVNGBU1ERK5JJU0kmxKSUhg291f6zY7m1iJ+LIlozkONy/95PSGBAQMG0L59e0qWLMm4ceMcTCsiIp5Gz6SJZMPGQ6foPzuawwlJ9GlWkZFtquPn4/3n9Y0badeuHfv372fkyJG8+OKL+Pr6OphYREQ8jUqayHX67eAper/3C15ehn/3aUyr6qUuuadcuXLcdtttfPzxxzRr1syBlCIi4um03CmSRftPnmHU/Fg6Tf0ZYwz/eaTJRQVt7dq1dO3alXPnzlGkSBGWL1+ugiYiItmmkiZyDdZaPli9h/sn/8Tn6w7S447yfPNUC6qWKgRAcnIyo0ePplmzZkRFRbFnzx5H84qISO6g5U6Rq0hKSWPk57EsjDlEk8rFGde1LhVKFDx/PTY2lrCwMGJjY+nbty+TJ0/G39/fwcQiIpJbqKSJXMGmQwk8/VkMWw4n8uT/VeOJ1tXw8vrz5ABrbGIxxAAAG2dJREFULYMGDeLIkSMsWrSIDh06OJhWRERyG5U0kcv4Mu53nvo0hgL5vZn+cENCageev7Zt2zYCAgIoXrw4H330EUWKFCEgIMDBtCIikhvpmTSRC1hrmb5iJ4PnrKdSQEGWPnH3+YKWnp7OlClTqF+/PqNGjQKgcuXKKmgiIuISmkkTyZSals4rX2zi/dV7ebBeGcZ2qUNB34wfkb1799KvXz++//572rRpw5gxYxxOKyIiuZ1Kmghw6L9nefLTGH7ZfZKBLSozMqT6+efPvvnmG7p27Yq1lnfffZf+/ftjjLnGO4qIiNwYlTTJ06y1LIn9nWGf/UpyWjpv/q0+HesHXXRPrVq1aN26NZMnT6ZSpUoOJRURkbxGz6RJnpWals7webE88Z8NVC5ZkG+fvud8Qfvss88IDQ0lPT2dMmXKsHDhQhU0ERHJUSppkidtOZxA93dWM3fdAQa3rMIXQ5pTtVQhTpw4QY8ePXjooYfYt28fJ0+edDqqiIjkUVrulDzFWsu8dQcYs3gjqWmWlzvWIrxpRQC+/PJL+vfvz/Hjx3n11VcZMWIE+fLpR0RERJyhv4Ekz0hNS+e5hb/xSdR+6pUryhsP1adSQMbpAefOnWPw4MEEBATw1VdfUb9+fYfTiohIXqeSJnlC5I7jPLfoN3Yd+4PHWlZh6H23kc/bi8jISBo1aoSvry/Lly+nQoUK+Pr6Oh1XREREz6RJ7nYg/gyj5sfRc+ZaTpxO5s2/1WdESHVSks/x1FNPcddddzF58mQAbrvtNhU0ERFxG5pJk1zJWsvc6AMM/zwWLwM97yzPqDbVKeznwy+//EJ4eDhbt24lIiKCIUOGOB1XRETkEippkutsO5LI6AVxRO2Jp0ZgESaF1qNmmSIAzJgxg8cee4ygoCC+/fZb7r33XofTioiIXJ5KmuQaiUkpTFi2lQ9W76WAjzcjQqozsEVlvL0M1lqMMTRr1ox+/foxceJE/P39nY4sIiJyRcZa63SG6xIcHGyjo6OdjiFuZvnGwzy7II7jp5NpVyeQ59vX5FZ/P1JTU5k4cSLbt29n1qxZTscUEZE8xhizzlobnJ3v1UyaeLR9J87w9GcxRO+Np0rJgszq3Zh65YoCsG3bNnr37s2aNWvo2rUrycnJ5M+f3+HEIiIiWaOSJh4pKSWN9yP3MPnbbXgZwzMP3M4jd1cmfz4v0tPTmTp1KiNGjMDX15c5c+bQo0cPHYouIiIeRSVNPM4PW47y4pKN7D1xhnurl+LFDrUoV/yW89ePHTvGCy+8wD333MOsWbMoU6aMg2lFRESyRyVNPMaJ0+eYsGwrn0Tt59YifswMD+b/apYGMrbcWLp0KW3btqV06dJER0dTuXJlzZ6JiIjH0ma24hHW7DpB+ymrmLfuAGFNKvD9sHvOF7TDhw/TsWNHHnzwQebNmwdAlSpVVNBERMSjaSZN3Fpyajrjvt7Cez/vplyxW5g/uBl1yxY9f33u3Lk89thjnD59mtdff51u3bo5mFZEROTmUUkTt7XlcALPzI0l7uAp/ta4HM+1r0kh3z9/yw4bNoxJkybRuHFj3n//fWrUqOFgWhERkZtLJU3cTlJKGmO/2sKctXsp4ufD1J4NaVc38Pz1/21M27ZtW/z9/Rk1ahT58um3soiI5C76m03cyrq98fz9kw0ciD9L+7qBvNC+JqWK+AGQmJjI0KFDKVGiBK+99hqtW7emdevWDicWERFxDX1wQNzCH+dSmbhsK92mR5KWbvmg3x281bPh+YK2YsUK6taty6xZs/Dy8sLTTsoQERG5XppJE8dF7znJk5/GcCD+LJ3ql+GljrXxL+ADwNmzZ3n22Wd54403qFq1KitXrqRZs2YOJxYREXE9lTRxzB/nUhk5P44lvx6iXPEC/OeRJjStUuKie3bv3s20adOIiIhg7NixFCxY0KG0IiIiOUslTRyxfl88EXPWc+hUEhGtqjKoZZXzn9xMTk5m8eLFdOvWjZo1a7Jjxw7Kli3rcGIREZGcpZImOSopJY0Jy7by3s+7KVXY95LZs7i4OMLDw4mJiSEqKorg4GAVNBERyZNU0iTH/LL7JE9/lvHs2f01S/NalzqUKOQLQFpaGhMmTOCFF16gWLFiLFq0iODgYIcTi4iIOEclTVwuNS2dyd9uY/qKXQT6+zEjrBH31Sx90bFNHTt2ZOnSpXTr1o1p06YREBDgYGIRERHnqaSJS+06dpqhc39lw77/0qFeGV7tXJsifhmf3ExPTwfAy8uL3r1707NnT3r06KEzN0VERFBJExdJS7fMjtzDP7/cjF8+LyaF1qNroz+fLdu3bx/9+vWjU6dOREREEBoa6mBaERER9+PSzWyNMSHGmK3GmB3GmJGXud7LGBOb+SvSGFPPlXkkZ2w9nEiHt1bxyhebqF+uKF8/2eJ8QbPWMnv2bOrUqcOaNWu0pYaIiMgVuGwmzRjjDUwF7gMOAFHGmMXW2k0X3LYbuMdaG2+MaQPMAO50VSZxrfg/knnzu+18tGYvhf3y8a8eDWhfJxAvr4zly8OHD/Poo4+yePFiWrRowb///W8qV67scGoRERH35MrlzjuAHdbaXQDGmE+AjsD5kmatjbzg/jWA9lrwUMs3Hmbk/DjizyTTvVE5hofcfv6Tm/+zefNmvvnmGyZNmsSTTz6Jl5dOJRMREbkSV5a0IGD/BV8f4OqzZP2Bry53wRgzEBgIUL58+ZuVT26CXcdOM2n5NpbG/c7tpQszu29j6pYtev76yZMn+fbbb+nevTutWrViz549lCpVysHEIiIinsGVJe1yH9G77KnYxphWZJS05pe7bq2dQcZSKMHBwTpZ2w2cOpPCm99t5/3Ve8jnZXiidVUiWlcjf74/Z8e+/PJLBgwYwMmTJ7n77rsJDAxUQRMREckiV5a0A0C5C74uCxz6603GmLrATKCNtfaEC/PITbIo5iBDP/uV1HRLaKOyPBNyO6UK+52/npiYyNChQ3n33XepVasWX3zxBYGBgQ4mFhER8TyuLGlRQDVjTCXgIPA3oOeFNxhjygPzgTBr7TYXZpGb4MTpcwyfF8t3W45SrVQhxnerS4PyxS66JyUlhcaNG7Nt2zaGDx/Oyy+/jK+v7xXeUURERK7EZSXNWptqjIkAlgHewHvW2o3GmEGZ16cDLwAlgLczNzBNtdbqLCA3Y63l+y1HGTU/jhN/JDP0vtsY1LIKPt5/Lm2mpKTg4+ODj48PzzzzDNWrV+euu+5yMLWIiIhnM9Z61iNewcHBNjo62ukYecaRhCRGfh7LD1uPEVS0ANMfbkSdsv4X3RMVFUV4eDj/+Mc/6NKli0NJRURE3I8xZl12J6C0B4Jc0bq98bT710p+3HaMUW2q883TLS4qaMnJyTz//PM0bdqU06dPU7Ro0au8m4iIiFwPHQsll0hKSeNf323n7R93ElDIl0WP33XRthoAv/32G+Hh4WzYsIHevXvzxhtvqKSJiIjcRCppcpFV24/z/KLf2H38DzrVL8OYB2tRrGD+S+6LiYnh4MGDLFiwgE6dOjmQVEREJHfTM2kCwNnkNKZ8nzF7FlS0AK90qkXr6qUvumf79u3ExcXRpUsXrLUkJCTg7+9/hXcUERGRG3kmTTNpwqrtxxk+71cOnUoipNatTOpej4K+f/7WSE9PZ9q0aQwfPpxixYrRrl07fH19VdBERERcSB8cyMOstcxcuYvw99bi6+PNh/3vYHpYo4sK2r59+3jggQeIiIigRYsWrF27VvueiYiI5ADNpOVRKWnpvLxkEx+u2Uur20vyZo8GFPHzueieY8eOUbduXVJTU3nnnXd45JFHyNzPTkRERFxMJS0POnH6HI9+uI7ovfH0aVaR59vXxNvrz/J19uxZChQoQMmSJfnnP/9JSEgIlStXdjCxiIhI3qPlzjzm1/3/pePUn4k7eIpJofV4sUOtiwravHnzqFSpEqtXrwZg8ODBKmgiIiIOUEnLQyJ3Hqfnu2s4l5rORwPupGujsuevnTx5kl69ehEaGkrZsmW155mIiIjDVNLyiE+j9hE26xdKFfFjSURzGlcsfv7a119/TZ06dfjss8946aWXWL16NTVq1HAwrYiIiOiZtFwuPd3y1g87eP2bbdxdLYDXu9enZOGLP53566+/UqxYMZYsWULDhg0dSioiIiIX0ma2uVhqWjojPo/j8/UHuLtaAP/u05h83hmTpz/99BNnzpwhJCSEtLQ0UlJS8PPzczixiIhI7qID1uUSO46epv2UVXy+/gBDWlfl/b53kM/bi7Nnz/L000/TsmVLXn75Zay1eHt7q6CJiIi4GS135kI/bDnK4x+vB2B817p0b1wOgKioKMLDw9myZQuDBw9m3Lhx2vdMRETETamk5TITlm1h6g87qRlYhLd7NaRiQEEAYmNjadq0KbfeeivLli3j/vvvdzipiIiIXI1KWi5hreUfSzczc9VuujQI4p9d6uDn401iYiKFCxemTp06TJ48mbCwMG2vISIi4gH0TFouYK1l4vKt5wvahNB6+HjB+PHjqVChAtu3b8cYw5AhQ1TQREREPIRm0jxcerrl5S82MTtyD/fXLM2E0Hrs3rWT3r17ExkZSZcuXVTMREREPJBm0jxYerrlpSUbmR25h4eCy/FOWCNmvDOdevXqsWnTJj766CPmzZtHyZIlnY4qIiIi10kzaR7qj3OpPP7xen7ceow+zSoy5sGaGGPYtGkTLVq0YObMmQQFBTkdU0RERLJJJc0DHUlIovs7q9l74gyj21bHZ9dK1q5NpEmTJkyaNAkfHx9trSEiIuLhtNzpYfYc/4MeM9ZwPPEckztU5ItJT9O3b1+mT58OQP78+VXQREREcgHNpHmQpbG/M3RuDL75vOkecIiBHcNITExk4sSJPPnkk07HExERkZtIJc0DWGt556ddjP1qC+WKF6DXrUd5rHd/GjVqxAcffEDNmjWdjigiIiI3mUqam0tKSWPk57EsjDlE7RJefPJEC/y8wSspgb59++Lj4+N0RBEREXEBlTQ3tu1IIoM+XMeOg8cou/1zoqJ+4Gyf3yhUsiQDBw50Op6IiIi4kEqam1q76wQ93l0DhzeT8s0U1hzaz7BhwyhcuLDT0URERCQHqKS5GWst7/28h7FLN5Ia+QEHVs6jUqVK/PTTTzRv3tzpeCIiIpJDVNLcSEpaOs/Oj2PuugPcW70URzYm037QIMaPH0+hQoWcjiciIiI5SCXNTSQkpfDo7LV8NWc6fcJ68Xp4Y9Ifnke+fBoiERGRvEgNwA3sP3mGHuPnEjX7FZKP7OTWdrXx8mqDl5eGR0REJK9SC3BY9O7jdBo0ikPfzcbf359P5s+nc+fOTscSERERh+lYKActjf2dkEdGcXD5TO69P4StmzepoImIiAigmTRHpKenM+WLaCZHHqNJ24cI7Xsv4T0f0pmbIiIicp5KWg6L+m077UN7cfLoIdo+/wFzHmtBIV8Ng4iIiFxMy505xFrL2H+9Q9PGDTi2M44OvR5h/pCWKmgiIiJyWWoIOSAhIYH7OnXnlx+WUbB8beZ8OJuOLRo5HUtERETcmGbSXMxay/zYY8TuPETdrhFsWLtKBU1ERESuSTNpLhIfH8/IUaNJqd+V7/ck0WHUNGaE34H/LT5ORxMREREPoJLmAsuWLaNfv378fuQIJdr788pTA3i0RWV9elNERESyTMudN9Hp06cZNGgQISEhJBk/Sj88iVefGsCge6qooImIiMh10UzaTTRixAhmzJhBnTYPc6pmF0a0r8Oj91RxOpaIiIh4IJW0G5SUlER8fDyBgYEMHfEsm/xqs9unPMMfuJ3BLas6HU9EREQ8lJY7b0B0dDQNGzYkNDSUg/FneHjOFnb7lGd8t7o83koFTURERLJPJS0bUlJSGDNmDE2aNCEhIYHwwUPp/s4aTp1N4fPHmtI9uJzTEUVERMTDabnzOu3bt4/OnTuzfv16wsLCaNXnGSb+eBBLMnMG3EmD8sWcjigiIiK5gEradSpRogR+fn58+J9P2eRbg5eW76N+uaJM6dGAcsVvcTqeiIiI5BJa7syCnTt30rt3b86cOUPBggV5bvpc3tpVgo/X7mNA80rMG9RUBU1ERERuKs2kXYW1lunTpzNs2DB8fHwYPHgwK/9blLd+2EGNwCJM7dWARhWKOx1TREREciHNpF3BgQMHeOCBBxg8eDDNmzfnl3UxvL3R8NYPO+jSMIhFj9+lgiYiIiIuo5m0K3jkkUf4+eefmTZtGv/XpRd//ySGzb8nMKpNdQbqiCcRERFxMZW0Cxw9ehRvb29KlCjBW2+9BcBZvwBCp68m/kwKU3s2pF3dQIdTioiISF6g5c5M8+fPp1atWgwZMgSAKlWqcMKrGP3fj6KAjzffPt1CBU1ERERyTJ4vafHx8YSFhdG1a1fKly/P6NGjSU1L59kFcfR8dw3exjC73x1ULVXY6agiIiKSh+Tp5c6oqCg6d+7M4cOHGTNmDKNHj+bUuXT6zo5i5fbjPFCrNK91qUvxgvmdjioiIiJ5TJ4uaRUqVKBKlSosXLiQ4OBgYg/8l0c/XMexxHO82qk2Dzep4HREERERyaPy3HLnypUrCQsLIy0tjVKlSrFixQpKVqrBS0s20nHqzwDMH9xMBU1EREQclWdm0pKSknjuued4/fXXqVSpEgcPHiQwqCzvR+5h4vKtJKWk07VhWZ5rV4NiWt4UERERh+WJkhYdHU14eDibN29m0KBBTJgwgVOp3oTNWsuaXSe5u1oAL3aoRZWShZyOKiIiIgLkgZKWlpZGWFgYiYmJfP311zS9pzVvfred9yP3goHxXevSvXE5p2OKiIiIXCTXlrTNmzdToUIFbrnlFubNm0eZMmWI3J/EXWO/5/S5VDrXD+Lp+2+jbDEdjC4iIiLuJ9d9cCAtLY2JEyfSoEEDXnnlFQBKlq/CE/O38fjH6wkqWoC5jzbl9Yfqq6CJiIiI28pVM2k7d+6kT58+rFq1ik6dOhHxxN95+8cdTPluB8lp6fz93mpEtK6Kj3eu66YiIiKSy+SakrZw4UIefvhh8uXLx+zZ7xPQ4P/o/+k2thxOpOXtJRndtgbVSuvUABEREfEMuaak1ahRg7tbtuKusOHM2J3Cwc0bCCpagLd6NqBdnUCMMU5HFBEREckyjy1p1lrmzJnDihUrmPL2NBbttuyo9xibNyRwR6XiPNu2BiG1b8XbS+VMREREPI9LS5oxJgR4E/AGZlprx/7lusm83hY4A/Sx1q6/1vsePXqUQYMGsWDBAqrWaUSzV77iZLIXHeqVYWCLytQO8nfB/42IiIhIznFZSTPGeANTgfuAA0CUMWaxtXbTBbe1Aapl/roTmJb53ys6fuIk1arX5HRiAsVb9SM5uCOlivsz7v7bua9madf8z4iIiIjkMFfOpN0B7LDW7gIwxnwCdAQuLGkdgQ+stRZYY4wpaowJtNb+fqU33bt3L/lLVaJuxHi639eU0OByVC2lkwJEREQkd3FlSQsC9l/w9QEunSW73D1BwEUlzRgzEBiY+eW55CM7f4t5oz8xb8CzNzezuF4AcNzpEJItGjvPpvHzbBo/z3V7dr/RlSXtck/s22zcg7V2BjADwBgTba0NvvF44gSNn+fS2Hk2jZ9n0/h5LmNMdHa/15W7uh4ALjwUsyxwKBv3iIiIiOQ5rixpUUA1Y0wlY0x+4G/A4r/csxgINxmaAKeu9jyaiIiISF7hsuVOa22qMSYCWEbGFhzvWWs3GmMGZV6fDnxJxvYbO8jYgqNvFt56hosiS87Q+HkujZ1n0/h5No2f58r22JmMD1aKiIiIiDvRSeMiIiIibkglTURERMQNuW1JM8aEGGO2GmN2GGNGXua6Mcb8K/N6rDGmoRM55VJZGLtemWMWa4yJNMbUcyKnXN61xu+C+xobY9KMMd1yMp9cXVbGzxjT0hgTY4zZaIxZkdMZ5fKy8GenvzFmiTHm18yxy8pz3JIDjDHvGWOOGmN+u8L1bHUWtyxpFxwp1QaoCfQwxtT8y20XHik1kIwjpcRhWRy73cA91tq6wCvogVi3kcXx+99948j4YJC4iayMnzGmKPA20MFaWwsIzfGgcoks/uw9Dmyy1tYDWgKTMndPEOfNBkKucj1bncUtSxoXHCllrU0G/nek1IXOHyllrV0DFDXGBOZ0ULnENcfOWhtprY3P/HINGfvjiXvIys8ewBDgc+BoToaTa8rK+PUE5ltr9wFYazWG7iErY2eBwsYYAxQCTgKpORtTLsda+xMZ43El2eos7lrSrnRc1PXeIznveselP/CVSxPJ9bjm+BljgoDOwPQczCVZk5Wfv9uAYsaYH40x64wx4TmWTq4mK2P3FlCDjE3f44C/W2vTcyae3KBsdRZXHgt1I27akVKS47I8LsaYVmSUtOYuTSTXIyvj9wYwwlqblvEPenEjWRm/fEAj4F6gALDaGLPGWrvN1eHkqrIydg8AMUBroArwjTFmpbU2wdXh5IZlq7O4a0nTkVKeK0vjYoypC8wE2lhrT+RQNrm2rIxfMPBJZkELANoaY1KttQtzJqJcRVb/7Dxurf0D+MMY8xNQD1BJc1ZWxq4vMNZmbHC6wxizG6gO/JIzEeUGZKuzuOtyp46U8lzXHDtjTHlgPhCmf727nWuOn7W2krW2orW2IjAPGKyC5jay8mfnIuBuY0w+Y8wtwJ3A5hzOKZfKytjtI2MGFGNMaeB2YFeOppTsylZnccuZNBceKSUulsWxewEoAbydORuTaq0Ndiqz/CmL4yduKivjZ63dbIz5GogF0oGZ1trLbhsgOSeLP3uvALONMXFkLJ+NsNYedyy0nGeM+Q8Zn7gNMMYcAMYAPnBjnUXHQomIiIi4IXdd7hQRERHJ01TSRERERNyQSpqIiIiIG1JJExEREXFDKmkiIiIibkglTUTyBGNMmjEm5oJfFY0xLY0xp4wxG4wxm40xYzLvvfD1LcaYiU7nF5G8xy33SRMRcYGz1tr6F75gjKkIrLTWtjfGFARijDFfZF7+3+sFgA3GmAXW2p9zNrKI5GWaSRMRATKPSVpHxpmIF75+lozzEq95GLKIyM2kkiYieUWBC5Y6F/z1ojGmBNAE2PiX14sB1YCfciamiEgGLXeKSF5xyXJnpruNMRvIOCJpbOZRPC0zX48l43zEsdbawzmYVUREJU1E8ryV1tr2V3rdGHMbsCrzmbSYnA4nInmXljtFRK7CWrsNeA0Y4XQWEclbVNJERK5tOtDCGFPJ6SAikncYa63TGURERETkLzSTJiIiIuKGVNJERERE3JBKmoiIiIgbUkkTERERcUMqaSIiIiJuSCVNRERExA2ppImIiIi4of8HYqtrWFxbZdQAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.model_selection import RandomizedSearchCV\n", + "from scipy.stats import loguniform, uniform\n", + "from sklearn.feature_selection import VarianceThreshold\n", + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "params = {'C': loguniform(1e-3, 1e1),\n", + " 'l1_ratio': uniform(),\n", + " }\n", + "\n", + "scaler = StandardScaler()\n", + "thresh = VarianceThreshold() # remove constant features\n", + "\n", + "thresh.fit(dataset.data.view(-1, 120))\n", + "scaler.fit(thresh.transform(dataset.data.view(-1, 120)))\n", + "\n", + "lr = LogisticRegression(random_state=13, solver='saga', penalty='elasticnet')\n", + "\n", + "cv = RandomizedSearchCV(lr, params, random_state=3, n_iter=100, n_jobs=-1, verbose=1, scoring='roc_auc', pre_dispatch='n_jobs')\n", + "cv.fit(scaler.transform(thresh.transform(dataset.data.view(-1, 120))),\n", + " dataset.targets)\n", + "\n", + "preds = cv.best_estimator_.predict_proba(scaler.transform(thresh.transform(val_dataset.data.view(-1, 120))))\n", + "\n", + "fpr, tpr, _ = roc_curve(val_dataset.targets, preds[:, 1])\n", + "\n", + "print(roc_auc_score(val_dataset.targets, preds[:, 1]))\n", + "\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "plt.figure(figsize=(10, 7))\n", + "plt.plot(fpr, tpr)\n", + "plt.plot([0, 1], [0, 1], 'k--')\n", + "plt.xlabel('FPR')\n", + "plt.ylabel('TPR')\n", + "plt.xlim([0, 1])\n", + "plt.ylim([0, 1])\n", + "plt.title('ROC curve of logistic regression baseline model');" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.5511878437375971" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cv.best_estimator_.score(scaler.transform(thresh.transform(val_dataset.data.view(-1, 120))), val_dataset.targets)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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bh0A3//+9xk1ahSpqb03BdDGjRtZuXJl4vULL7zAz37Wbv+gIS+ZBBIVkbYj2rq2FhhvjClqepJYArR4chGRIhEZIyJjgOXArSLyfLNdrqZV9VVTz67vAItExN+DuJRSA0A0Gu16p6N0ySWXsGbNmm4f11lsrRPIokWL+O53v9uj+Aa7pCZTNMZ8AbAbY8YDdwBdduMVkagx5nbivavswGMistkYc3PT9oc6O94Y4wMWAje12vRbwA281tTws1pEbk7iOpRSvWzPnj2cf/75zJs3jw0bNjBhwgSeeOIJfvnLX/Liiy8SCARYsGABv//97zHGcOaZZ7JgwQLeeecdFi1axIQJE/jJT35COBwmJyeHp556ivz8fO6++252795NaWkpn3zyCb/61a9YvXo1L7/8MgUFBbz44otJjVmYP39+0tdy/fXXk52dzYYNG5g5cyZXXXUVd955J4FAAK/Xy9KlSykqKuKHP/whgUCAt99+m+9973sEAgHWrVvHb3/7W/bu3csNN9xAeXk5eXl5LF26lBNOOOFobvHAJiKd/gA+4KfEnyjWAj8B3F0dN5B+Zs2aJUoNRVu2bOnX99+9e7cA8vbbb4uIyJe//GX5xS9+IZWVlYl9rrnmGnnhhRdEROSMM86QW265JbGtqqpKLMsSEZE//OEP8s1vflNERH70ox/JKaecIuFwWDZu3Cher1dWrlwpIiKLFy+W5557rsOYzjjjDFm7dm2LspSUlC6v5brrrpOLLrpIotGoiIjU1tZKJBIREZHXXntNLr/8chERWbp0qdx2222J45q/vvjii+WPf/yjiIg8+uijcumll3b5vgNFe79LwDrp5LM1mSeQSU0/jqafS4k3bE/r/XSmlBpsRo0axSmnnALANddcw/33309RURE///nP8fv9VFVVMXnyZC655BIArrrqqsSxJSUlXHXVVZSWlhIOh1sMZLvgggtwOp1MnTqVWCzG+eefD8DUqVPZs2dPn1zLlVdeid0eH29VW1vLddddx/bt2zHGEIlEujz+3Xff5W9/+xsAX/rSl7jrrrv6JM6BIpk2kKeAx4DLiTdcX0x8JLjqpkggRGNFLfs3bKeutJJwo04/oQa/1mMIjDHceuutLF++nI8++ogbb7yxxSC1lJQj45C//vWvc/vtt/PRRx/x+9//vsV+bne8p6DNZsPpdCbex2az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6+folFJqYNAqrHZEgmG2v/VRi7Ky7fuJhiL9FJFSA9cNN9zAsGHDmDJlSrvbn3rqKaZNm8a0adNYsGABH3zwQWJbR1PBV1VVsXDhQsaPH8/ChQuprq5ObLvnnnsoLi5m4sSJrFp1ZCaj9evXM3XqVIqLi7njjjsS06yEQiGuuuoqiouLmTdvHnv27Ekc8/jjjzN+/HjGjx/P448/nijfvXs38+bNY/z48Vx11VWEw/E5xESEO+64g+LiYqZNm8b7778/4K/li1/8IhMnTmTKlCnccMMNRCK9+DkmIkP+Z9asWdIdjdUN8tQt98tj1/488bP0ul9IQ2Vdt86jVF/bsmVLt/b/+3OvyrknXynTRp8h5558pfz9uVePOoZ///vfsn79epk8eXK729955x2pqqoSEZGVK1fK3LlzRUQkGo3K2LFjZefOnRIKhWTatGmyefNmERH59re/Lffcc4+IiNxzzz1y1113iYjI5s2bZdq0aRIMBmXXrl0yduxYiUajIiIyZ84c+c9//iOWZcn5558vK1euFBGRBx54QG666SYREXn66afl85//vIiIVFZWSlFRkVRWVkpVVZUUFRUl4rzyyivl6aefFhGRm266SX73u9+JiMhLL70k559/vliWJe++++6guJaXXnpJLMsSy7JkyZIliWtprb3fJWCddPLZqk8g7XCneph91Rktyk46dyZOj65foAavl55/jR9/9xeU7j+EiFC6/xA//u4veOn5147qvKeffjrZ2R3Pp7VgwQKysrIAmD9/PiUlJUDLqeBdLldiKniAFStWcN111wFw3XXX8fzzzyfKlyxZgtvtpqioiOLiYtasWUNpaSl1dXWcfPLJGGO49tprWxxz+FxXXHEFr7/+OiLCqlWrWLhwIdnZ2WRlZbFw4UJeeeUVRIQ33niDK664ot33v/baazHGMH/+fGpqaigtLR2w1wJw4YUXYozBGMPcuXMT9783aBtIO+wOO2PmTGBY8UgObisht2g4qbkZuHzuHp+zoaGRYCBEenoqLrcmInXs3f/zPxAMhFqUBQMh7v/5H7ho8cJjEsOjjz7KBRdcALQ/Ffx7770HxOfMGjFiBAAjRoygrKwsccz8+fNbHLN//36cTieFhYVtylu/j8PhICMjg8rKyg6noq+srCQzMzOxZklH52q+baBeS3ORSIQnn3yS++67r82/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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import seaborn as sns\n", + "\n", + "results = pd.DataFrame.from_dict(cv.cv_results_)\n", + "sns.scatterplot(x='param_C', y='mean_test_score', data=results)\n", + "plt.xscale('log')\n", + "plt.show()\n", + "sns.scatterplot(x='param_l1_ratio', y='mean_test_score', data=results)\n", + "plt.show()\n", + "sns.scatterplot(x='param_C', y='mean_test_score', hue='param_l1_ratio', data=results)\n", + "plt.xscale('log')\n", + "plt.show()" + ] + }, + { + "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.7.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notes/10_24_ new data, baseline.pdf b/notes/10_24_ new data, baseline.pdf new file mode 100644 index 0000000..3317689 Binary files /dev/null and b/notes/10_24_ new data, baseline.pdf differ