[53d15f]: / notebooks / Training.ipynb

Download this file

4204 lines (4203 with data), 218.0 kB

{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "VERSION = 33\n",
    "\n",
    "FOCAL_LOSS = 0\n",
    "CLOUD_SINGLE = True\n",
    "MIXUP = False\n",
    "NO_BLACK_LOSS = True\n",
    "DATA_SMALL = False\n",
    "\n",
    "# VERSION 31 old features, no stage2 training\n",
    "# VERSION 32 old features, no stage2 training, fine-tuned weighted\n",
    "# VERSION 33 old features, with stage2 training\n",
    "# VERSION 34 old features, with stage2 training, fine-tuned weighted\n",
    "# VERSION 35 new features, with stage2 training\n",
    "# VERSION 35 new features, with stage2 training, fine-tuned weighted"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "if VERSION in [31,32]:\n",
    "    TRAIN_ON_STAGE_1 = False\n",
    "else:\n",
    "    TRAIN_ON_STAGE_1 = True\n",
    "\n",
    "if VERSION in [32,34,36]:\n",
    "    WEIGHTED = True\n",
    "else:\n",
    "    WEIGHTED = False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "%run ./Code.ipynb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "if VERSION in [31,32]:\n",
    "    # old features, no stage2 training\n",
    "    train_md, test_md = loadMetadata()\n",
    "elif VERSION in [33,34]:\n",
    "    # old features, with stage2 training\n",
    "    train_md, test_md = loadMetadata3()\n",
    "elif VERSION in [35,36]:\n",
    "    # new features\n",
    "    train_md, test_md = loadMetadata2()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.111931    230422\n",
       "0.864417    230399\n",
       "1.200910    221421\n",
       "0.446933     70301\n",
       "0.737883       129\n",
       "0.000000       124\n",
       "0.796930         1\n",
       "Name: weights, dtype: int64"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_md.weights.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_md.weights.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(752797, 103)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_md.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Pre-processing features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "_,_ = loadMetadata(True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "_,_ = loadMetadata3(True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "_,_ = loadMetadata2(True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[7, 9]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_datasets3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dataset 7 fold 0 feats size torch.Size([2697008, 552])\n",
      "dataset 7 fold 1 feats size torch.Size([2697008, 552])\n",
      "dataset 7 fold 2 feats size torch.Size([2697008, 552])\n"
     ]
    }
   ],
   "source": [
    "preprocessedData(7,do_train=True,do_test=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dataset 9 fold 0 feats size torch.Size([2697008, 256])\n",
      "dataset 9 fold 1 feats size torch.Size([2697008, 256])\n",
      "dataset 9 fold 2 feats size torch.Size([2697008, 256])\n"
     ]
    }
   ],
   "source": [
    "preprocessedData(9,do_train=True,do_test=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[11, 12, 13]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_datasets5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dataset 11 fold 0 feats size torch.Size([2697008, 256])\n",
      "dataset 11 fold 1 feats size torch.Size([2697008, 256])\n",
      "dataset 11 fold 2 feats size torch.Size([2697008, 256])\n",
      "dataset 11 fold 3 feats size torch.Size([2697008, 256])\n",
      "dataset 11 fold 4 feats size torch.Size([2697008, 256])\n"
     ]
    }
   ],
   "source": [
    "preprocessedData(11,do_train=True,do_test=False, folds=range(5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dataset 12 fold 0 feats size torch.Size([2697008, 256])\n",
      "dataset 12 fold 1 feats size torch.Size([2697008, 256])\n",
      "dataset 12 fold 2 feats size torch.Size([2697008, 256])\n",
      "dataset 12 fold 3 feats size torch.Size([2697008, 256])\n",
      "dataset 12 fold 4 feats size torch.Size([2697008, 256])\n"
     ]
    }
   ],
   "source": [
    "preprocessedData(12,do_train=True,do_test=False, folds=range(5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dataset 13 fold 0 feats size torch.Size([2697008, 256])\n",
      "dataset 13 fold 1 feats size torch.Size([2697008, 256])\n",
      "dataset 13 fold 2 feats size torch.Size([2697008, 256])\n",
      "dataset 13 fold 3 feats size torch.Size([2697008, 256])\n",
      "dataset 13 fold 4 feats size torch.Size([2697008, 256])\n"
     ]
    }
   ],
   "source": [
    "preprocessedData(13,do_train=True,do_test=False, folds=range(5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dataset 7 fold 0 feats size torch.Size([2697008, 552])\n",
      "dataset 7 fold 1 feats size torch.Size([2697008, 552])\n",
      "dataset 7 fold 2 feats size torch.Size([2697008, 552])\n",
      "dataset 9 fold 0 feats size torch.Size([2697008, 256])\n",
      "dataset 9 fold 1 feats size torch.Size([2697008, 256])\n",
      "dataset 9 fold 2 feats size torch.Size([2697008, 256])\n",
      "dataset 11 fold 0 feats size torch.Size([2697008, 256])\n",
      "dataset 11 fold 1 feats size torch.Size([2697008, 256])\n",
      "dataset 11 fold 2 feats size torch.Size([2697008, 256])\n",
      "dataset 11 fold 3 feats size torch.Size([2697008, 256])\n",
      "dataset 11 fold 4 feats size torch.Size([2697008, 256])\n",
      "dataset 12 fold 0 feats size torch.Size([2697008, 256])\n",
      "dataset 12 fold 1 feats size torch.Size([2697008, 256])\n",
      "dataset 12 fold 2 feats size torch.Size([2697008, 256])\n",
      "dataset 12 fold 3 feats size torch.Size([2697008, 256])\n",
      "dataset 12 fold 4 feats size torch.Size([2697008, 256])\n",
      "dataset 13 fold 0 feats size torch.Size([2697008, 256])\n",
      "dataset 13 fold 1 feats size torch.Size([2697008, 256])\n",
      "dataset 13 fold 2 feats size torch.Size([2697008, 256])\n",
      "dataset 13 fold 3 feats size torch.Size([2697008, 256])\n",
      "dataset 13 fold 4 feats size torch.Size([2697008, 256])\n"
     ]
    }
   ],
   "source": [
    "for ds in my_datasets3:\n",
    "    preprocessedData(ds)\n",
    "\n",
    "for ds in my_datasets5:\n",
    "    preprocessedData(ds, folds=range(5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dataset 14 fold 0 feats size torch.Size([3011188, 256])\n"
     ]
    },
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: '/mnt/edisk/running/yuval/model_se_resnet101_version_new_splits_stage2_type_features_test_split_0.pkl'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-10-5a07cc4fa1a8>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpreprocessedData\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m14\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mfold_col\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'fold5'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdo_test\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdo_train\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-6-51e1d35e10f9>\u001b[0m in \u001b[0;36mpreprocessedData\u001b[0;34m(dataset, folds, fold_col, do_test, do_test2, do_train)\u001b[0m\n\u001b[1;32m     62\u001b[0m                 .format(dataset_name.replace('_5n','').replace('_5f','').replace('_5',''),\n\u001b[1;32m     63\u001b[0m                         filename_add,dsft,focal,ds_num,test_fix,fold)\n\u001b[0;32m---> 64\u001b[0;31m             \u001b[0mfeats\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpickle\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'rb'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     65\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     66\u001b[0m             \u001b[0;32massert\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfeats\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m8\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtest_md\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/mnt/edisk/running/yuval/model_se_resnet101_version_new_splits_stage2_type_features_test_split_0.pkl'"
     ]
    }
   ],
   "source": [
    "preprocessedData(14,fold_col='fold5',do_test=True,do_train=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Running"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "completed epochs: 0 starting now: 4\n",
      "DataSet 14 train size 17355 fold 2\n",
      "adding dummy serieses 27\n",
      "DataSet 14 valid size 4416 fold 2\n",
      "setFeats, augmentation 0\n",
      "dataset train: 17355 valid: 4416 loader train: 542 valid: 138\n",
      "starting from scratch\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 22.728 time per batch: 0.455\n",
      "Batch 100 device: cuda time passed: 39.605 time per batch: 0.396\n",
      "Batch 150 device: cuda time passed: 55.920 time per batch: 0.373\n",
      "Batch 200 device: cuda time passed: 72.699 time per batch: 0.363\n",
      "Batch 250 device: cuda time passed: 89.437 time per batch: 0.358\n",
      "Batch 300 device: cuda time passed: 105.583 time per batch: 0.352\n",
      "Batch 350 device: cuda time passed: 122.869 time per batch: 0.351\n",
      "Batch 400 device: cuda time passed: 139.694 time per batch: 0.349\n",
      "Batch 450 device: cuda time passed: 158.701 time per batch: 0.353\n",
      "Batch 500 device: cuda time passed: 176.083 time per batch: 0.352\n",
      "Batch 50 device: cuda time passed: 8.131 time per batch: 0.163\n",
      "Batch 100 device: cuda time passed: 14.930 time per batch: 0.149\n",
      "v35, d14, e1, f2, trn ll: 0.0580, val ll: 0.0650, ll_w: 0.0575, cor: 0.8338, auc: 0.9870, lr: 0.0002\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 22.873 time per batch: 0.457\n",
      "Batch 100 device: cuda time passed: 39.907 time per batch: 0.399\n",
      "Batch 150 device: cuda time passed: 57.763 time per batch: 0.385\n",
      "Batch 200 device: cuda time passed: 75.045 time per batch: 0.375\n",
      "Batch 250 device: cuda time passed: 92.730 time per batch: 0.371\n",
      "Batch 300 device: cuda time passed: 109.667 time per batch: 0.366\n",
      "Batch 350 device: cuda time passed: 126.574 time per batch: 0.362\n",
      "Batch 400 device: cuda time passed: 143.725 time per batch: 0.359\n",
      "Batch 450 device: cuda time passed: 161.952 time per batch: 0.360\n",
      "Batch 500 device: cuda time passed: 178.315 time per batch: 0.357\n",
      "Batch 50 device: cuda time passed: 8.428 time per batch: 0.169\n",
      "Batch 100 device: cuda time passed: 15.068 time per batch: 0.151\n",
      "v35, d14, e2, f2, trn ll: 0.0356, val ll: 0.0640, ll_w: 0.0562, cor: 0.8351, auc: 0.9872, lr: 0.0002\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 22.887 time per batch: 0.458\n",
      "Batch 100 device: cuda time passed: 39.853 time per batch: 0.399\n",
      "Batch 150 device: cuda time passed: 56.609 time per batch: 0.377\n",
      "Batch 200 device: cuda time passed: 73.060 time per batch: 0.365\n",
      "Batch 250 device: cuda time passed: 90.475 time per batch: 0.362\n",
      "Batch 300 device: cuda time passed: 107.703 time per batch: 0.359\n",
      "Batch 350 device: cuda time passed: 124.235 time per batch: 0.355\n",
      "Batch 400 device: cuda time passed: 141.549 time per batch: 0.354\n",
      "Batch 450 device: cuda time passed: 159.349 time per batch: 0.354\n",
      "Batch 500 device: cuda time passed: 175.549 time per batch: 0.351\n",
      "Batch 50 device: cuda time passed: 8.712 time per batch: 0.174\n",
      "Batch 100 device: cuda time passed: 15.378 time per batch: 0.154\n",
      "v35, d14, e3, f2, trn ll: 0.0341, val ll: 0.0622, ll_w: 0.0549, cor: 0.8409, auc: 0.9887, lr: 0.0002\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 23.339 time per batch: 0.467\n",
      "Batch 100 device: cuda time passed: 40.154 time per batch: 0.402\n",
      "Batch 150 device: cuda time passed: 56.698 time per batch: 0.378\n",
      "Batch 200 device: cuda time passed: 74.060 time per batch: 0.370\n",
      "Batch 250 device: cuda time passed: 91.302 time per batch: 0.365\n",
      "Batch 300 device: cuda time passed: 108.675 time per batch: 0.362\n",
      "Batch 350 device: cuda time passed: 126.067 time per batch: 0.360\n",
      "Batch 400 device: cuda time passed: 143.346 time per batch: 0.358\n",
      "Batch 450 device: cuda time passed: 162.692 time per batch: 0.362\n",
      "Batch 500 device: cuda time passed: 179.814 time per batch: 0.360\n",
      "Batch 50 device: cuda time passed: 7.879 time per batch: 0.158\n",
      "Batch 100 device: cuda time passed: 14.703 time per batch: 0.147\n",
      "v35, d14, e4, f2, trn ll: 0.0335, val ll: 0.0613, ll_w: 0.0539, cor: 0.8421, auc: 0.9887, lr: 0.0002\n",
      "total running time 900.058856010437\n",
      "completed epochs: 4 starting now: 4\n",
      "DataSet 14 train size 17355 fold 2\n",
      "adding dummy serieses 27\n",
      "DataSet 14 valid size 4416 fold 2\n",
      "setFeats, augmentation 0\n",
      "dataset train: 17355 valid: 4416 loader train: 542 valid: 138\n",
      "loading model model.b4.f2.d14.v35\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 22.315 time per batch: 0.446\n",
      "Batch 100 device: cuda time passed: 38.974 time per batch: 0.390\n",
      "Batch 150 device: cuda time passed: 56.082 time per batch: 0.374\n",
      "Batch 200 device: cuda time passed: 73.546 time per batch: 0.368\n",
      "Batch 250 device: cuda time passed: 90.717 time per batch: 0.363\n",
      "Batch 300 device: cuda time passed: 107.371 time per batch: 0.358\n",
      "Batch 350 device: cuda time passed: 124.145 time per batch: 0.355\n",
      "Batch 400 device: cuda time passed: 140.102 time per batch: 0.350\n",
      "Batch 450 device: cuda time passed: 158.547 time per batch: 0.352\n",
      "Batch 500 device: cuda time passed: 176.664 time per batch: 0.353\n",
      "Batch 50 device: cuda time passed: 8.467 time per batch: 0.169\n",
      "Batch 100 device: cuda time passed: 15.208 time per batch: 0.152\n",
      "v35, d14, e5, f2, trn ll: 0.0319, val ll: 0.0602, ll_w: 0.0530, cor: 0.8445, auc: 0.9892, lr: 2e-05\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 23.093 time per batch: 0.462\n",
      "Batch 100 device: cuda time passed: 40.190 time per batch: 0.402\n",
      "Batch 150 device: cuda time passed: 57.287 time per batch: 0.382\n",
      "Batch 200 device: cuda time passed: 74.458 time per batch: 0.372\n",
      "Batch 250 device: cuda time passed: 91.213 time per batch: 0.365\n",
      "Batch 300 device: cuda time passed: 108.222 time per batch: 0.361\n",
      "Batch 350 device: cuda time passed: 125.171 time per batch: 0.358\n",
      "Batch 400 device: cuda time passed: 142.199 time per batch: 0.355\n",
      "Batch 450 device: cuda time passed: 162.403 time per batch: 0.361\n",
      "Batch 500 device: cuda time passed: 179.653 time per batch: 0.359\n",
      "Batch 50 device: cuda time passed: 8.772 time per batch: 0.175\n",
      "Batch 100 device: cuda time passed: 15.212 time per batch: 0.152\n",
      "v35, d14, e6, f2, trn ll: 0.0316, val ll: 0.0603, ll_w: 0.0531, cor: 0.8444, auc: 0.9892, lr: 2e-05\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.633 time per batch: 0.433\n",
      "Batch 100 device: cuda time passed: 38.635 time per batch: 0.386\n",
      "Batch 150 device: cuda time passed: 55.617 time per batch: 0.371\n",
      "Batch 200 device: cuda time passed: 72.396 time per batch: 0.362\n",
      "Batch 250 device: cuda time passed: 89.274 time per batch: 0.357\n",
      "Batch 300 device: cuda time passed: 106.187 time per batch: 0.354\n",
      "Batch 350 device: cuda time passed: 122.741 time per batch: 0.351\n",
      "Batch 400 device: cuda time passed: 139.218 time per batch: 0.348\n",
      "Batch 450 device: cuda time passed: 158.183 time per batch: 0.352\n",
      "Batch 500 device: cuda time passed: 175.811 time per batch: 0.352\n",
      "Batch 50 device: cuda time passed: 8.583 time per batch: 0.172\n",
      "Batch 100 device: cuda time passed: 15.243 time per batch: 0.152\n",
      "v35, d14, e7, f2, trn ll: 0.0315, val ll: 0.0602, ll_w: 0.0530, cor: 0.8446, auc: 0.9892, lr: 2e-05\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 23.204 time per batch: 0.464\n",
      "Batch 100 device: cuda time passed: 40.589 time per batch: 0.406\n",
      "Batch 150 device: cuda time passed: 58.004 time per batch: 0.387\n",
      "Batch 200 device: cuda time passed: 75.275 time per batch: 0.376\n",
      "Batch 250 device: cuda time passed: 92.072 time per batch: 0.368\n",
      "Batch 300 device: cuda time passed: 109.143 time per batch: 0.364\n",
      "Batch 350 device: cuda time passed: 125.692 time per batch: 0.359\n",
      "Batch 400 device: cuda time passed: 143.440 time per batch: 0.359\n",
      "Batch 450 device: cuda time passed: 164.424 time per batch: 0.365\n",
      "Batch 500 device: cuda time passed: 181.490 time per batch: 0.363\n",
      "Batch 50 device: cuda time passed: 8.635 time per batch: 0.173\n",
      "Batch 100 device: cuda time passed: 15.140 time per batch: 0.151\n",
      "v35, d14, e8, f2, trn ll: 0.0314, val ll: 0.0601, ll_w: 0.0529, cor: 0.8448, auc: 0.9892, lr: 2e-05\n",
      "total running time 871.9309167861938\n",
      "completed epochs: 8 starting now: 3\n",
      "DataSet 14 train size 17355 fold 2\n",
      "adding dummy serieses 27\n",
      "DataSet 14 valid size 4416 fold 2\n",
      "setFeats, augmentation 0\n",
      "dataset train: 17355 valid: 4416 loader train: 542 valid: 138\n",
      "loading model model.b8.f2.d14.v35\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 22.052 time per batch: 0.441\n",
      "Batch 100 device: cuda time passed: 38.728 time per batch: 0.387\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Batch 150 device: cuda time passed: 56.020 time per batch: 0.373\n",
      "Batch 200 device: cuda time passed: 73.183 time per batch: 0.366\n",
      "Batch 250 device: cuda time passed: 90.324 time per batch: 0.361\n",
      "Batch 300 device: cuda time passed: 107.782 time per batch: 0.359\n",
      "Batch 350 device: cuda time passed: 124.543 time per batch: 0.356\n",
      "Batch 400 device: cuda time passed: 141.478 time per batch: 0.354\n",
      "Batch 450 device: cuda time passed: 162.319 time per batch: 0.361\n",
      "Batch 500 device: cuda time passed: 179.659 time per batch: 0.359\n",
      "Batch 50 device: cuda time passed: 7.857 time per batch: 0.157\n",
      "Batch 100 device: cuda time passed: 14.956 time per batch: 0.150\n",
      "v35, d14, e9, f2, trn ll: 0.0313, val ll: 0.0599, ll_w: 0.0527, cor: 0.8454, auc: 0.9892, lr: 5e-06\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 23.852 time per batch: 0.477\n",
      "Batch 100 device: cuda time passed: 41.405 time per batch: 0.414\n",
      "Batch 150 device: cuda time passed: 59.015 time per batch: 0.393\n",
      "Batch 200 device: cuda time passed: 76.762 time per batch: 0.384\n",
      "Batch 250 device: cuda time passed: 94.142 time per batch: 0.377\n",
      "Batch 300 device: cuda time passed: 111.812 time per batch: 0.373\n",
      "Batch 350 device: cuda time passed: 129.992 time per batch: 0.371\n",
      "Batch 400 device: cuda time passed: 147.178 time per batch: 0.368\n",
      "Batch 450 device: cuda time passed: 168.899 time per batch: 0.375\n",
      "Batch 500 device: cuda time passed: 184.992 time per batch: 0.370\n",
      "Batch 50 device: cuda time passed: 8.119 time per batch: 0.162\n",
      "Batch 100 device: cuda time passed: 14.013 time per batch: 0.140\n",
      "v35, d14, e10, f2, trn ll: 0.0313, val ll: 0.0600, ll_w: 0.0528, cor: 0.8451, auc: 0.9893, lr: 5e-06\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.209 time per batch: 0.424\n",
      "Batch 100 device: cuda time passed: 37.676 time per batch: 0.377\n",
      "Batch 150 device: cuda time passed: 53.211 time per batch: 0.355\n",
      "Batch 200 device: cuda time passed: 68.886 time per batch: 0.344\n",
      "Batch 250 device: cuda time passed: 84.449 time per batch: 0.338\n",
      "Batch 300 device: cuda time passed: 100.285 time per batch: 0.334\n",
      "Batch 350 device: cuda time passed: 116.165 time per batch: 0.332\n",
      "Batch 400 device: cuda time passed: 131.615 time per batch: 0.329\n",
      "Batch 450 device: cuda time passed: 150.426 time per batch: 0.334\n",
      "Batch 500 device: cuda time passed: 166.304 time per batch: 0.333\n",
      "Batch 50 device: cuda time passed: 7.404 time per batch: 0.148\n",
      "Batch 100 device: cuda time passed: 13.992 time per batch: 0.140\n",
      "v35, d14, e11, f2, trn ll: 0.0312, val ll: 0.0600, ll_w: 0.0528, cor: 0.8450, auc: 0.9893, lr: 5e-06\n",
      "total running time 644.8997066020966\n",
      "completed epochs: 11 starting now: 2\n",
      "DataSet 14 train size 17355 fold 2\n",
      "adding dummy serieses 27\n",
      "DataSet 14 valid size 4416 fold 2\n",
      "setFeats, augmentation 0\n",
      "dataset train: 17355 valid: 4416 loader train: 542 valid: 138\n",
      "loading model model.b11.f2.d14.v35\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.014 time per batch: 0.420\n",
      "Batch 100 device: cuda time passed: 36.560 time per batch: 0.366\n",
      "Batch 150 device: cuda time passed: 53.272 time per batch: 0.355\n",
      "Batch 200 device: cuda time passed: 68.574 time per batch: 0.343\n",
      "Batch 250 device: cuda time passed: 83.938 time per batch: 0.336\n",
      "Batch 300 device: cuda time passed: 100.283 time per batch: 0.334\n",
      "Batch 350 device: cuda time passed: 116.620 time per batch: 0.333\n",
      "Batch 400 device: cuda time passed: 132.783 time per batch: 0.332\n",
      "Batch 450 device: cuda time passed: 152.425 time per batch: 0.339\n",
      "Batch 500 device: cuda time passed: 168.627 time per batch: 0.337\n",
      "Batch 50 device: cuda time passed: 8.257 time per batch: 0.165\n",
      "Batch 100 device: cuda time passed: 14.836 time per batch: 0.148\n",
      "v35, d14, e12, f2, trn ll: 0.0311, val ll: 0.0600, ll_w: 0.0528, cor: 0.8451, auc: 0.9893, lr: 2e-06\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.311 time per batch: 0.426\n",
      "Batch 100 device: cuda time passed: 38.735 time per batch: 0.387\n",
      "Batch 150 device: cuda time passed: 54.760 time per batch: 0.365\n",
      "Batch 200 device: cuda time passed: 71.364 time per batch: 0.357\n",
      "Batch 250 device: cuda time passed: 87.975 time per batch: 0.352\n",
      "Batch 300 device: cuda time passed: 104.126 time per batch: 0.347\n",
      "Batch 350 device: cuda time passed: 120.536 time per batch: 0.344\n",
      "Batch 400 device: cuda time passed: 136.741 time per batch: 0.342\n",
      "Batch 450 device: cuda time passed: 154.903 time per batch: 0.344\n",
      "Batch 500 device: cuda time passed: 173.138 time per batch: 0.346\n",
      "Batch 50 device: cuda time passed: 8.686 time per batch: 0.174\n",
      "Batch 100 device: cuda time passed: 15.208 time per batch: 0.152\n",
      "v35, d14, e13, f2, trn ll: 0.0311, val ll: 0.0599, ll_w: 0.0527, cor: 0.8454, auc: 0.9892, lr: 2e-06\n",
      "total running time 421.16584634780884\n",
      "total time 2838.7946536540985\n",
      "completed epochs: 0 starting now: 4\n",
      "DataSet 14 train size 17408 fold 3\n",
      "adding dummy serieses 16\n",
      "DataSet 14 valid size 4352 fold 3\n",
      "setFeats, augmentation 0\n",
      "dataset train: 17408 valid: 4352 loader train: 544 valid: 136\n",
      "starting from scratch\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.909 time per batch: 0.438\n",
      "Batch 100 device: cuda time passed: 38.295 time per batch: 0.383\n",
      "Batch 150 device: cuda time passed: 54.459 time per batch: 0.363\n",
      "Batch 200 device: cuda time passed: 71.059 time per batch: 0.355\n",
      "Batch 250 device: cuda time passed: 87.285 time per batch: 0.349\n",
      "Batch 300 device: cuda time passed: 103.278 time per batch: 0.344\n",
      "Batch 350 device: cuda time passed: 119.758 time per batch: 0.342\n",
      "Batch 400 device: cuda time passed: 136.023 time per batch: 0.340\n",
      "Batch 450 device: cuda time passed: 156.381 time per batch: 0.348\n",
      "Batch 500 device: cuda time passed: 172.724 time per batch: 0.345\n",
      "Batch 50 device: cuda time passed: 8.381 time per batch: 0.168\n",
      "Batch 100 device: cuda time passed: 15.352 time per batch: 0.154\n",
      "v35, d14, e1, f3, trn ll: 0.0574, val ll: 0.0673, ll_w: 0.0595, cor: 0.8311, auc: 0.9867, lr: 0.0002\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.941 time per batch: 0.439\n",
      "Batch 100 device: cuda time passed: 38.796 time per batch: 0.388\n",
      "Batch 150 device: cuda time passed: 55.281 time per batch: 0.369\n",
      "Batch 200 device: cuda time passed: 72.261 time per batch: 0.361\n",
      "Batch 250 device: cuda time passed: 88.752 time per batch: 0.355\n",
      "Batch 300 device: cuda time passed: 105.021 time per batch: 0.350\n",
      "Batch 350 device: cuda time passed: 121.855 time per batch: 0.348\n",
      "Batch 400 device: cuda time passed: 137.611 time per batch: 0.344\n",
      "Batch 450 device: cuda time passed: 158.361 time per batch: 0.352\n",
      "Batch 500 device: cuda time passed: 175.196 time per batch: 0.350\n",
      "Batch 50 device: cuda time passed: 7.713 time per batch: 0.154\n",
      "Batch 100 device: cuda time passed: 15.676 time per batch: 0.157\n",
      "v35, d14, e2, f3, trn ll: 0.0356, val ll: 0.0659, ll_w: 0.0581, cor: 0.8330, auc: 0.9871, lr: 0.0002\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 22.308 time per batch: 0.446\n",
      "Batch 100 device: cuda time passed: 38.613 time per batch: 0.386\n",
      "Batch 150 device: cuda time passed: 55.122 time per batch: 0.367\n",
      "Batch 200 device: cuda time passed: 71.951 time per batch: 0.360\n",
      "Batch 250 device: cuda time passed: 88.792 time per batch: 0.355\n",
      "Batch 300 device: cuda time passed: 105.939 time per batch: 0.353\n",
      "Batch 350 device: cuda time passed: 121.911 time per batch: 0.348\n",
      "Batch 400 device: cuda time passed: 138.362 time per batch: 0.346\n",
      "Batch 450 device: cuda time passed: 158.974 time per batch: 0.353\n",
      "Batch 500 device: cuda time passed: 175.745 time per batch: 0.351\n",
      "Batch 50 device: cuda time passed: 8.061 time per batch: 0.161\n",
      "Batch 100 device: cuda time passed: 14.448 time per batch: 0.144\n",
      "v35, d14, e3, f3, trn ll: 0.0344, val ll: 0.0648, ll_w: 0.0572, cor: 0.8354, auc: 0.9880, lr: 0.0002\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 22.337 time per batch: 0.447\n",
      "Batch 100 device: cuda time passed: 39.126 time per batch: 0.391\n",
      "Batch 150 device: cuda time passed: 56.197 time per batch: 0.375\n",
      "Batch 200 device: cuda time passed: 72.948 time per batch: 0.365\n",
      "Batch 250 device: cuda time passed: 89.869 time per batch: 0.359\n",
      "Batch 300 device: cuda time passed: 106.597 time per batch: 0.355\n",
      "Batch 350 device: cuda time passed: 123.356 time per batch: 0.352\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Batch 400 device: cuda time passed: 140.828 time per batch: 0.352\n",
      "Batch 450 device: cuda time passed: 161.360 time per batch: 0.359\n",
      "Batch 500 device: cuda time passed: 178.210 time per batch: 0.356\n",
      "Batch 50 device: cuda time passed: 8.594 time per batch: 0.172\n",
      "Batch 100 device: cuda time passed: 15.062 time per batch: 0.151\n",
      "v35, d14, e4, f3, trn ll: 0.0338, val ll: 0.0646, ll_w: 0.0566, cor: 0.8354, auc: 0.9876, lr: 0.0002\n",
      "total running time 878.9186632633209\n",
      "completed epochs: 4 starting now: 4\n",
      "DataSet 14 train size 17408 fold 3\n",
      "adding dummy serieses 16\n",
      "DataSet 14 valid size 4352 fold 3\n",
      "setFeats, augmentation 0\n",
      "dataset train: 17408 valid: 4352 loader train: 544 valid: 136\n",
      "loading model model.b4.f3.d14.v35\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 22.351 time per batch: 0.447\n",
      "Batch 100 device: cuda time passed: 39.285 time per batch: 0.393\n",
      "Batch 150 device: cuda time passed: 56.332 time per batch: 0.376\n",
      "Batch 200 device: cuda time passed: 73.401 time per batch: 0.367\n",
      "Batch 250 device: cuda time passed: 90.373 time per batch: 0.361\n",
      "Batch 300 device: cuda time passed: 107.953 time per batch: 0.360\n",
      "Batch 350 device: cuda time passed: 125.840 time per batch: 0.360\n",
      "Batch 400 device: cuda time passed: 141.813 time per batch: 0.355\n",
      "Batch 450 device: cuda time passed: 163.658 time per batch: 0.364\n",
      "Batch 500 device: cuda time passed: 180.005 time per batch: 0.360\n",
      "Batch 50 device: cuda time passed: 9.095 time per batch: 0.182\n",
      "Batch 100 device: cuda time passed: 15.365 time per batch: 0.154\n",
      "v35, d14, e5, f3, trn ll: 0.0323, val ll: 0.0630, ll_w: 0.0553, cor: 0.8398, auc: 0.9887, lr: 2e-05\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 22.265 time per batch: 0.445\n",
      "Batch 100 device: cuda time passed: 38.806 time per batch: 0.388\n",
      "Batch 150 device: cuda time passed: 55.889 time per batch: 0.373\n",
      "Batch 200 device: cuda time passed: 72.973 time per batch: 0.365\n",
      "Batch 250 device: cuda time passed: 89.595 time per batch: 0.358\n",
      "Batch 300 device: cuda time passed: 106.073 time per batch: 0.354\n",
      "Batch 350 device: cuda time passed: 123.445 time per batch: 0.353\n",
      "Batch 400 device: cuda time passed: 139.717 time per batch: 0.349\n",
      "Batch 450 device: cuda time passed: 159.922 time per batch: 0.355\n",
      "Batch 500 device: cuda time passed: 177.361 time per batch: 0.355\n",
      "Batch 50 device: cuda time passed: 8.455 time per batch: 0.169\n",
      "Batch 100 device: cuda time passed: 15.167 time per batch: 0.152\n",
      "v35, d14, e6, f3, trn ll: 0.0319, val ll: 0.0627, ll_w: 0.0550, cor: 0.8406, auc: 0.9888, lr: 2e-05\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.948 time per batch: 0.439\n",
      "Batch 100 device: cuda time passed: 38.589 time per batch: 0.386\n",
      "Batch 150 device: cuda time passed: 56.699 time per batch: 0.378\n",
      "Batch 200 device: cuda time passed: 74.066 time per batch: 0.370\n",
      "Batch 250 device: cuda time passed: 90.412 time per batch: 0.362\n",
      "Batch 300 device: cuda time passed: 108.005 time per batch: 0.360\n",
      "Batch 350 device: cuda time passed: 124.540 time per batch: 0.356\n",
      "Batch 400 device: cuda time passed: 141.433 time per batch: 0.354\n",
      "Batch 450 device: cuda time passed: 158.940 time per batch: 0.353\n",
      "Batch 500 device: cuda time passed: 176.269 time per batch: 0.353\n",
      "Batch 50 device: cuda time passed: 7.920 time per batch: 0.158\n",
      "Batch 100 device: cuda time passed: 14.641 time per batch: 0.146\n",
      "v35, d14, e7, f3, trn ll: 0.0317, val ll: 0.0628, ll_w: 0.0550, cor: 0.8408, auc: 0.9888, lr: 2e-05\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.956 time per batch: 0.439\n",
      "Batch 100 device: cuda time passed: 38.717 time per batch: 0.387\n",
      "Batch 150 device: cuda time passed: 54.847 time per batch: 0.366\n",
      "Batch 200 device: cuda time passed: 73.123 time per batch: 0.366\n",
      "Batch 250 device: cuda time passed: 89.668 time per batch: 0.359\n",
      "Batch 300 device: cuda time passed: 105.873 time per batch: 0.353\n",
      "Batch 350 device: cuda time passed: 122.045 time per batch: 0.349\n",
      "Batch 400 device: cuda time passed: 138.273 time per batch: 0.346\n",
      "Batch 450 device: cuda time passed: 157.145 time per batch: 0.349\n",
      "Batch 500 device: cuda time passed: 173.020 time per batch: 0.346\n",
      "Batch 50 device: cuda time passed: 8.091 time per batch: 0.162\n",
      "Batch 100 device: cuda time passed: 14.363 time per batch: 0.144\n",
      "v35, d14, e8, f3, trn ll: 0.0317, val ll: 0.0624, ll_w: 0.0548, cor: 0.8413, auc: 0.9889, lr: 2e-05\n",
      "total running time 867.7460985183716\n",
      "completed epochs: 8 starting now: 3\n",
      "DataSet 14 train size 17408 fold 3\n",
      "adding dummy serieses 16\n",
      "DataSet 14 valid size 4352 fold 3\n",
      "setFeats, augmentation 0\n",
      "dataset train: 17408 valid: 4352 loader train: 544 valid: 136\n",
      "loading model model.b8.f3.d14.v35\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 20.904 time per batch: 0.418\n",
      "Batch 100 device: cuda time passed: 37.911 time per batch: 0.379\n",
      "Batch 150 device: cuda time passed: 54.975 time per batch: 0.367\n",
      "Batch 200 device: cuda time passed: 71.442 time per batch: 0.357\n",
      "Batch 250 device: cuda time passed: 87.521 time per batch: 0.350\n",
      "Batch 300 device: cuda time passed: 104.238 time per batch: 0.347\n",
      "Batch 350 device: cuda time passed: 121.406 time per batch: 0.347\n",
      "Batch 400 device: cuda time passed: 137.836 time per batch: 0.345\n",
      "Batch 450 device: cuda time passed: 157.379 time per batch: 0.350\n",
      "Batch 500 device: cuda time passed: 173.441 time per batch: 0.347\n",
      "Batch 50 device: cuda time passed: 8.016 time per batch: 0.160\n",
      "Batch 100 device: cuda time passed: 14.483 time per batch: 0.145\n",
      "v35, d14, e9, f3, trn ll: 0.0313, val ll: 0.0623, ll_w: 0.0547, cor: 0.8414, auc: 0.9889, lr: 5e-06\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 22.463 time per batch: 0.449\n",
      "Batch 100 device: cuda time passed: 39.561 time per batch: 0.396\n",
      "Batch 150 device: cuda time passed: 56.056 time per batch: 0.374\n",
      "Batch 200 device: cuda time passed: 72.486 time per batch: 0.362\n",
      "Batch 250 device: cuda time passed: 88.576 time per batch: 0.354\n",
      "Batch 300 device: cuda time passed: 105.400 time per batch: 0.351\n",
      "Batch 350 device: cuda time passed: 122.470 time per batch: 0.350\n",
      "Batch 400 device: cuda time passed: 138.730 time per batch: 0.347\n",
      "Batch 450 device: cuda time passed: 158.273 time per batch: 0.352\n",
      "Batch 500 device: cuda time passed: 174.807 time per batch: 0.350\n",
      "Batch 50 device: cuda time passed: 8.288 time per batch: 0.166\n",
      "Batch 100 device: cuda time passed: 14.541 time per batch: 0.145\n",
      "v35, d14, e10, f3, trn ll: 0.0314, val ll: 0.0623, ll_w: 0.0547, cor: 0.8414, auc: 0.9889, lr: 5e-06\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 23.117 time per batch: 0.462\n",
      "Batch 100 device: cuda time passed: 40.982 time per batch: 0.410\n",
      "Batch 150 device: cuda time passed: 61.655 time per batch: 0.411\n",
      "Batch 200 device: cuda time passed: 78.830 time per batch: 0.394\n",
      "Batch 250 device: cuda time passed: 94.886 time per batch: 0.380\n",
      "Batch 300 device: cuda time passed: 111.050 time per batch: 0.370\n",
      "Batch 350 device: cuda time passed: 127.401 time per batch: 0.364\n",
      "Batch 400 device: cuda time passed: 144.495 time per batch: 0.361\n",
      "Batch 450 device: cuda time passed: 163.904 time per batch: 0.364\n",
      "Batch 500 device: cuda time passed: 180.762 time per batch: 0.362\n",
      "Batch 50 device: cuda time passed: 9.296 time per batch: 0.186\n",
      "Batch 100 device: cuda time passed: 15.943 time per batch: 0.159\n",
      "v35, d14, e11, f3, trn ll: 0.0314, val ll: 0.0623, ll_w: 0.0548, cor: 0.8414, auc: 0.9890, lr: 5e-06\n",
      "total running time 650.1911387443542\n",
      "completed epochs: 11 starting now: 2\n",
      "DataSet 14 train size 17408 fold 3\n",
      "adding dummy serieses 16\n",
      "DataSet 14 valid size 4352 fold 3\n",
      "setFeats, augmentation 0\n",
      "dataset train: 17408 valid: 4352 loader train: 544 valid: 136\n",
      "loading model model.b11.f3.d14.v35\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 22.074 time per batch: 0.441\n",
      "Batch 100 device: cuda time passed: 38.499 time per batch: 0.385\n",
      "Batch 150 device: cuda time passed: 55.562 time per batch: 0.370\n",
      "Batch 200 device: cuda time passed: 71.852 time per batch: 0.359\n",
      "Batch 250 device: cuda time passed: 88.012 time per batch: 0.352\n",
      "Batch 300 device: cuda time passed: 105.386 time per batch: 0.351\n",
      "Batch 350 device: cuda time passed: 123.305 time per batch: 0.352\n",
      "Batch 400 device: cuda time passed: 140.065 time per batch: 0.350\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Batch 450 device: cuda time passed: 162.016 time per batch: 0.360\n",
      "Batch 500 device: cuda time passed: 179.990 time per batch: 0.360\n",
      "Batch 50 device: cuda time passed: 8.722 time per batch: 0.174\n",
      "Batch 100 device: cuda time passed: 15.752 time per batch: 0.158\n",
      "v35, d14, e12, f3, trn ll: 0.0313, val ll: 0.0622, ll_w: 0.0546, cor: 0.8417, auc: 0.9890, lr: 2e-06\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 24.253 time per batch: 0.485\n",
      "Batch 100 device: cuda time passed: 41.866 time per batch: 0.419\n",
      "Batch 150 device: cuda time passed: 60.387 time per batch: 0.403\n",
      "Batch 200 device: cuda time passed: 77.524 time per batch: 0.388\n",
      "Batch 250 device: cuda time passed: 95.133 time per batch: 0.381\n",
      "Batch 300 device: cuda time passed: 113.060 time per batch: 0.377\n",
      "Batch 350 device: cuda time passed: 130.037 time per batch: 0.372\n",
      "Batch 400 device: cuda time passed: 146.372 time per batch: 0.366\n",
      "Batch 450 device: cuda time passed: 166.916 time per batch: 0.371\n",
      "Batch 500 device: cuda time passed: 182.928 time per batch: 0.366\n",
      "Batch 50 device: cuda time passed: 7.564 time per batch: 0.151\n",
      "Batch 100 device: cuda time passed: 14.464 time per batch: 0.145\n",
      "v35, d14, e13, f3, trn ll: 0.0313, val ll: 0.0621, ll_w: 0.0546, cor: 0.8417, auc: 0.9890, lr: 2e-06\n",
      "total running time 444.2737958431244\n",
      "total time 5680.686395645142\n",
      "completed epochs: 0 starting now: 4\n",
      "DataSet 14 train size 17376 fold 4\n",
      "adding dummy serieses 16\n",
      "DataSet 14 valid size 4384 fold 4\n",
      "setFeats, augmentation 0\n",
      "dataset train: 17376 valid: 4384 loader train: 543 valid: 137\n",
      "starting from scratch\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.233 time per batch: 0.425\n",
      "Batch 100 device: cuda time passed: 37.840 time per batch: 0.378\n",
      "Batch 150 device: cuda time passed: 54.944 time per batch: 0.366\n",
      "Batch 200 device: cuda time passed: 72.824 time per batch: 0.364\n",
      "Batch 250 device: cuda time passed: 89.779 time per batch: 0.359\n",
      "Batch 300 device: cuda time passed: 106.930 time per batch: 0.356\n",
      "Batch 350 device: cuda time passed: 123.451 time per batch: 0.353\n",
      "Batch 400 device: cuda time passed: 139.893 time per batch: 0.350\n",
      "Batch 450 device: cuda time passed: 157.031 time per batch: 0.349\n",
      "Batch 500 device: cuda time passed: 173.987 time per batch: 0.348\n",
      "Batch 50 device: cuda time passed: 8.944 time per batch: 0.179\n",
      "Batch 100 device: cuda time passed: 14.936 time per batch: 0.149\n",
      "v35, d14, e1, f4, trn ll: 0.0625, val ll: 0.0667, ll_w: 0.0586, cor: 0.8303, auc: 0.9854, lr: 0.0002\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.754 time per batch: 0.435\n",
      "Batch 100 device: cuda time passed: 38.725 time per batch: 0.387\n",
      "Batch 150 device: cuda time passed: 55.236 time per batch: 0.368\n",
      "Batch 200 device: cuda time passed: 72.718 time per batch: 0.364\n",
      "Batch 250 device: cuda time passed: 88.735 time per batch: 0.355\n",
      "Batch 300 device: cuda time passed: 105.104 time per batch: 0.350\n",
      "Batch 350 device: cuda time passed: 122.012 time per batch: 0.349\n",
      "Batch 400 device: cuda time passed: 137.964 time per batch: 0.345\n",
      "Batch 450 device: cuda time passed: 156.284 time per batch: 0.347\n",
      "Batch 500 device: cuda time passed: 173.980 time per batch: 0.348\n",
      "Batch 50 device: cuda time passed: 8.316 time per batch: 0.166\n",
      "Batch 100 device: cuda time passed: 14.987 time per batch: 0.150\n",
      "v35, d14, e2, f4, trn ll: 0.0359, val ll: 0.0657, ll_w: 0.0577, cor: 0.8311, auc: 0.9863, lr: 0.0002\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 22.364 time per batch: 0.447\n",
      "Batch 100 device: cuda time passed: 40.987 time per batch: 0.410\n",
      "Batch 150 device: cuda time passed: 58.507 time per batch: 0.390\n",
      "Batch 200 device: cuda time passed: 77.763 time per batch: 0.389\n",
      "Batch 250 device: cuda time passed: 95.192 time per batch: 0.381\n",
      "Batch 300 device: cuda time passed: 111.754 time per batch: 0.373\n",
      "Batch 350 device: cuda time passed: 129.000 time per batch: 0.369\n",
      "Batch 400 device: cuda time passed: 146.293 time per batch: 0.366\n",
      "Batch 450 device: cuda time passed: 165.444 time per batch: 0.368\n",
      "Batch 500 device: cuda time passed: 183.020 time per batch: 0.366\n",
      "Batch 50 device: cuda time passed: 7.861 time per batch: 0.157\n",
      "Batch 100 device: cuda time passed: 15.124 time per batch: 0.151\n",
      "v35, d14, e3, f4, trn ll: 0.0343, val ll: 0.0632, ll_w: 0.0554, cor: 0.8399, auc: 0.9873, lr: 0.0002\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.633 time per batch: 0.433\n",
      "Batch 100 device: cuda time passed: 37.934 time per batch: 0.379\n",
      "Batch 150 device: cuda time passed: 55.032 time per batch: 0.367\n",
      "Batch 200 device: cuda time passed: 72.134 time per batch: 0.361\n",
      "Batch 250 device: cuda time passed: 89.244 time per batch: 0.357\n",
      "Batch 300 device: cuda time passed: 107.215 time per batch: 0.357\n",
      "Batch 350 device: cuda time passed: 125.071 time per batch: 0.357\n",
      "Batch 400 device: cuda time passed: 142.857 time per batch: 0.357\n",
      "Batch 450 device: cuda time passed: 164.440 time per batch: 0.365\n",
      "Batch 500 device: cuda time passed: 181.712 time per batch: 0.363\n",
      "Batch 50 device: cuda time passed: 8.480 time per batch: 0.170\n",
      "Batch 100 device: cuda time passed: 15.129 time per batch: 0.151\n",
      "v35, d14, e4, f4, trn ll: 0.0335, val ll: 0.0664, ll_w: 0.0588, cor: 0.8346, auc: 0.9881, lr: 0.0002\n",
      "total running time 953.7901792526245\n",
      "completed epochs: 4 starting now: 4\n",
      "DataSet 14 train size 17376 fold 4\n",
      "adding dummy serieses 16\n",
      "DataSet 14 valid size 4384 fold 4\n",
      "setFeats, augmentation 0\n",
      "dataset train: 17376 valid: 4384 loader train: 543 valid: 137\n",
      "loading model model.b4.f4.d14.v35\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 23.867 time per batch: 0.477\n",
      "Batch 100 device: cuda time passed: 41.869 time per batch: 0.419\n",
      "Batch 150 device: cuda time passed: 59.945 time per batch: 0.400\n",
      "Batch 200 device: cuda time passed: 78.035 time per batch: 0.390\n",
      "Batch 250 device: cuda time passed: 95.686 time per batch: 0.383\n",
      "Batch 300 device: cuda time passed: 113.281 time per batch: 0.378\n",
      "Batch 350 device: cuda time passed: 130.764 time per batch: 0.374\n",
      "Batch 400 device: cuda time passed: 148.630 time per batch: 0.372\n",
      "Batch 450 device: cuda time passed: 170.233 time per batch: 0.378\n",
      "Batch 500 device: cuda time passed: 188.222 time per batch: 0.376\n",
      "Batch 50 device: cuda time passed: 8.176 time per batch: 0.164\n",
      "Batch 100 device: cuda time passed: 14.735 time per batch: 0.147\n",
      "v35, d14, e5, f4, trn ll: 0.0317, val ll: 0.0608, ll_w: 0.0533, cor: 0.8448, auc: 0.9887, lr: 2e-05\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.737 time per batch: 0.435\n",
      "Batch 100 device: cuda time passed: 37.853 time per batch: 0.379\n",
      "Batch 150 device: cuda time passed: 55.337 time per batch: 0.369\n",
      "Batch 200 device: cuda time passed: 71.157 time per batch: 0.356\n",
      "Batch 250 device: cuda time passed: 87.010 time per batch: 0.348\n",
      "Batch 300 device: cuda time passed: 103.209 time per batch: 0.344\n",
      "Batch 350 device: cuda time passed: 119.077 time per batch: 0.340\n",
      "Batch 400 device: cuda time passed: 135.723 time per batch: 0.339\n",
      "Batch 450 device: cuda time passed: 154.558 time per batch: 0.343\n",
      "Batch 500 device: cuda time passed: 170.455 time per batch: 0.341\n",
      "Batch 50 device: cuda time passed: 7.589 time per batch: 0.152\n",
      "Batch 100 device: cuda time passed: 14.520 time per batch: 0.145\n",
      "v35, d14, e6, f4, trn ll: 0.0314, val ll: 0.0611, ll_w: 0.0535, cor: 0.8444, auc: 0.9886, lr: 2e-05\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 20.682 time per batch: 0.414\n",
      "Batch 100 device: cuda time passed: 36.792 time per batch: 0.368\n",
      "Batch 150 device: cuda time passed: 52.970 time per batch: 0.353\n",
      "Batch 200 device: cuda time passed: 69.095 time per batch: 0.345\n",
      "Batch 250 device: cuda time passed: 85.616 time per batch: 0.342\n",
      "Batch 300 device: cuda time passed: 101.163 time per batch: 0.337\n",
      "Batch 350 device: cuda time passed: 117.018 time per batch: 0.334\n",
      "Batch 400 device: cuda time passed: 133.178 time per batch: 0.333\n",
      "Batch 450 device: cuda time passed: 151.207 time per batch: 0.336\n",
      "Batch 500 device: cuda time passed: 168.530 time per batch: 0.337\n",
      "Batch 50 device: cuda time passed: 7.677 time per batch: 0.154\n",
      "Batch 100 device: cuda time passed: 14.814 time per batch: 0.148\n",
      "v35, d14, e7, f4, trn ll: 0.0312, val ll: 0.0609, ll_w: 0.0534, cor: 0.8449, auc: 0.9886, lr: 2e-05\n",
      "setFeats, augmentation -1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Batch 50 device: cuda time passed: 21.214 time per batch: 0.424\n",
      "Batch 100 device: cuda time passed: 37.518 time per batch: 0.375\n",
      "Batch 150 device: cuda time passed: 54.071 time per batch: 0.360\n",
      "Batch 200 device: cuda time passed: 69.747 time per batch: 0.349\n",
      "Batch 250 device: cuda time passed: 85.969 time per batch: 0.344\n",
      "Batch 300 device: cuda time passed: 102.031 time per batch: 0.340\n",
      "Batch 350 device: cuda time passed: 119.208 time per batch: 0.341\n",
      "Batch 400 device: cuda time passed: 134.735 time per batch: 0.337\n",
      "Batch 450 device: cuda time passed: 154.078 time per batch: 0.342\n",
      "Batch 500 device: cuda time passed: 170.411 time per batch: 0.341\n",
      "Batch 50 device: cuda time passed: 8.323 time per batch: 0.166\n",
      "Batch 100 device: cuda time passed: 14.637 time per batch: 0.146\n",
      "v35, d14, e8, f4, trn ll: 0.0311, val ll: 0.0610, ll_w: 0.0534, cor: 0.8453, auc: 0.9885, lr: 2e-05\n",
      "total running time 855.8814930915833\n",
      "completed epochs: 8 starting now: 3\n",
      "DataSet 14 train size 17376 fold 4\n",
      "adding dummy serieses 16\n",
      "DataSet 14 valid size 4384 fold 4\n",
      "setFeats, augmentation 0\n",
      "dataset train: 17376 valid: 4384 loader train: 543 valid: 137\n",
      "loading model model.b8.f4.d14.v35\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.184 time per batch: 0.424\n",
      "Batch 100 device: cuda time passed: 37.215 time per batch: 0.372\n",
      "Batch 150 device: cuda time passed: 53.050 time per batch: 0.354\n",
      "Batch 200 device: cuda time passed: 69.171 time per batch: 0.346\n",
      "Batch 250 device: cuda time passed: 85.650 time per batch: 0.343\n",
      "Batch 300 device: cuda time passed: 101.736 time per batch: 0.339\n",
      "Batch 350 device: cuda time passed: 117.355 time per batch: 0.335\n",
      "Batch 400 device: cuda time passed: 133.001 time per batch: 0.333\n",
      "Batch 450 device: cuda time passed: 152.997 time per batch: 0.340\n",
      "Batch 500 device: cuda time passed: 169.252 time per batch: 0.339\n",
      "Batch 50 device: cuda time passed: 7.640 time per batch: 0.153\n",
      "Batch 100 device: cuda time passed: 14.457 time per batch: 0.145\n",
      "v35, d14, e9, f4, trn ll: 0.0310, val ll: 0.0609, ll_w: 0.0532, cor: 0.8452, auc: 0.9886, lr: 5e-06\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 20.694 time per batch: 0.414\n",
      "Batch 100 device: cuda time passed: 37.491 time per batch: 0.375\n",
      "Batch 150 device: cuda time passed: 53.734 time per batch: 0.358\n",
      "Batch 200 device: cuda time passed: 69.955 time per batch: 0.350\n",
      "Batch 250 device: cuda time passed: 85.941 time per batch: 0.344\n",
      "Batch 300 device: cuda time passed: 101.942 time per batch: 0.340\n",
      "Batch 350 device: cuda time passed: 117.779 time per batch: 0.337\n",
      "Batch 400 device: cuda time passed: 133.697 time per batch: 0.334\n",
      "Batch 450 device: cuda time passed: 151.893 time per batch: 0.338\n",
      "Batch 500 device: cuda time passed: 169.235 time per batch: 0.338\n",
      "Batch 50 device: cuda time passed: 8.345 time per batch: 0.167\n",
      "Batch 100 device: cuda time passed: 14.826 time per batch: 0.148\n",
      "v35, d14, e10, f4, trn ll: 0.0308, val ll: 0.0608, ll_w: 0.0532, cor: 0.8453, auc: 0.9887, lr: 5e-06\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.099 time per batch: 0.422\n",
      "Batch 100 device: cuda time passed: 36.777 time per batch: 0.368\n",
      "Batch 150 device: cuda time passed: 53.978 time per batch: 0.360\n",
      "Batch 200 device: cuda time passed: 69.323 time per batch: 0.347\n",
      "Batch 250 device: cuda time passed: 85.573 time per batch: 0.342\n",
      "Batch 300 device: cuda time passed: 102.080 time per batch: 0.340\n",
      "Batch 350 device: cuda time passed: 118.682 time per batch: 0.339\n",
      "Batch 400 device: cuda time passed: 135.171 time per batch: 0.338\n",
      "Batch 450 device: cuda time passed: 152.631 time per batch: 0.339\n",
      "Batch 500 device: cuda time passed: 167.938 time per batch: 0.336\n",
      "Batch 50 device: cuda time passed: 8.310 time per batch: 0.166\n",
      "Batch 100 device: cuda time passed: 14.317 time per batch: 0.143\n",
      "v35, d14, e11, f4, trn ll: 0.0308, val ll: 0.0607, ll_w: 0.0532, cor: 0.8454, auc: 0.9887, lr: 5e-06\n",
      "total running time 623.4176635742188\n",
      "completed epochs: 11 starting now: 2\n",
      "DataSet 14 train size 17376 fold 4\n",
      "adding dummy serieses 16\n",
      "DataSet 14 valid size 4384 fold 4\n",
      "setFeats, augmentation 0\n",
      "dataset train: 17376 valid: 4384 loader train: 543 valid: 137\n",
      "loading model model.b11.f4.d14.v35\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.779 time per batch: 0.436\n",
      "Batch 100 device: cuda time passed: 38.087 time per batch: 0.381\n",
      "Batch 150 device: cuda time passed: 53.619 time per batch: 0.357\n",
      "Batch 200 device: cuda time passed: 69.523 time per batch: 0.348\n",
      "Batch 250 device: cuda time passed: 85.874 time per batch: 0.343\n",
      "Batch 300 device: cuda time passed: 101.439 time per batch: 0.338\n",
      "Batch 350 device: cuda time passed: 117.336 time per batch: 0.335\n",
      "Batch 400 device: cuda time passed: 133.035 time per batch: 0.333\n",
      "Batch 450 device: cuda time passed: 152.595 time per batch: 0.339\n",
      "Batch 500 device: cuda time passed: 169.052 time per batch: 0.338\n",
      "Batch 50 device: cuda time passed: 8.452 time per batch: 0.169\n",
      "Batch 100 device: cuda time passed: 14.411 time per batch: 0.144\n",
      "v35, d14, e12, f4, trn ll: 0.0307, val ll: 0.0609, ll_w: 0.0532, cor: 0.8456, auc: 0.9886, lr: 2e-06\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 20.947 time per batch: 0.419\n",
      "Batch 100 device: cuda time passed: 37.425 time per batch: 0.374\n",
      "Batch 150 device: cuda time passed: 52.922 time per batch: 0.353\n",
      "Batch 200 device: cuda time passed: 69.971 time per batch: 0.350\n",
      "Batch 250 device: cuda time passed: 85.655 time per batch: 0.343\n",
      "Batch 300 device: cuda time passed: 101.705 time per batch: 0.339\n",
      "Batch 350 device: cuda time passed: 117.494 time per batch: 0.336\n",
      "Batch 400 device: cuda time passed: 134.239 time per batch: 0.336\n",
      "Batch 450 device: cuda time passed: 154.606 time per batch: 0.344\n",
      "Batch 500 device: cuda time passed: 171.257 time per batch: 0.343\n",
      "Batch 50 device: cuda time passed: 8.181 time per batch: 0.164\n",
      "Batch 100 device: cuda time passed: 14.339 time per batch: 0.143\n",
      "v35, d14, e13, f4, trn ll: 0.0308, val ll: 0.0607, ll_w: 0.0532, cor: 0.8454, auc: 0.9887, lr: 2e-06\n",
      "total running time 417.99802231788635\n",
      "total time 8532.541821241379\n",
      "total time 8532.541992664337\n",
      "total time 8532.54287481308\n"
     ]
    }
   ],
   "source": [
    "weight_decay = 1e-4\n",
    "lrs = np.array([2e-4, 2e-5, 5e-6, 2e-6])\n",
    "epochs = np.array([4, 4, 3, 2])\n",
    "stg = time.time()\n",
    "for ds in [14]:\n",
    "    #folds = getNFolds(ds)\n",
    "    for f in [2,3,4]:#range(folds):\n",
    "        for i,lr in enumerate(lrs):\n",
    "            learning_rate = lr\n",
    "            model, predictions, val_results = train_one(dataset=ds, epochs=epochs[i], bs=32, fold=f)\n",
    "        print('total time', time.time() - stg)\n",
    "    print('total time', time.time() - stg)\n",
    "print('total time', time.time() - stg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "completed epochs: 0 starting now: 2\n",
      "DataSet 14 train size 17369 fold 0\n",
      "adding dummy serieses 9\n",
      "DataSet 14 valid size 4384 fold 0\n",
      "setFeats, augmentation 0\n",
      "WeightedRandomSampler\n",
      "dataset train: 17369 valid: 4384 loader train: 542 valid: 137\n",
      "loading model model.b13.f0.d14.v35\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.626 time per batch: 0.433\n",
      "Batch 100 device: cuda time passed: 37.191 time per batch: 0.372\n",
      "Batch 150 device: cuda time passed: 53.924 time per batch: 0.359\n",
      "Batch 200 device: cuda time passed: 69.954 time per batch: 0.350\n",
      "Batch 250 device: cuda time passed: 85.591 time per batch: 0.342\n",
      "Batch 300 device: cuda time passed: 101.332 time per batch: 0.338\n",
      "Batch 350 device: cuda time passed: 118.288 time per batch: 0.338\n",
      "Batch 400 device: cuda time passed: 134.411 time per batch: 0.336\n",
      "Batch 450 device: cuda time passed: 155.215 time per batch: 0.345\n",
      "Batch 500 device: cuda time passed: 171.357 time per batch: 0.343\n",
      "Batch 50 device: cuda time passed: 8.519 time per batch: 0.170\n",
      "Batch 100 device: cuda time passed: 14.697 time per batch: 0.147\n",
      "v36, d14, e1, f0, trn ll: 0.0293, val ll: 0.0595, ll_w: 0.0575, cor: 0.8474, auc: 0.9893, lr: 1e-05\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 20.234 time per batch: 0.405\n",
      "Batch 100 device: cuda time passed: 37.254 time per batch: 0.373\n",
      "Batch 150 device: cuda time passed: 53.470 time per batch: 0.356\n",
      "Batch 200 device: cuda time passed: 69.176 time per batch: 0.346\n",
      "Batch 250 device: cuda time passed: 85.543 time per batch: 0.342\n",
      "Batch 300 device: cuda time passed: 102.066 time per batch: 0.340\n",
      "Batch 350 device: cuda time passed: 118.857 time per batch: 0.340\n",
      "Batch 400 device: cuda time passed: 134.521 time per batch: 0.336\n",
      "Batch 450 device: cuda time passed: 153.072 time per batch: 0.340\n",
      "Batch 500 device: cuda time passed: 170.818 time per batch: 0.342\n",
      "Batch 50 device: cuda time passed: 8.401 time per batch: 0.168\n",
      "Batch 100 device: cuda time passed: 14.616 time per batch: 0.146\n",
      "v36, d14, e2, f0, trn ll: 0.0302, val ll: 0.0595, ll_w: 0.0574, cor: 0.8477, auc: 0.9893, lr: 1e-05\n",
      "total running time 458.30859661102295\n",
      "completed epochs: 2 starting now: 1\n",
      "DataSet 14 train size 17369 fold 0\n",
      "adding dummy serieses 9\n",
      "DataSet 14 valid size 4384 fold 0\n",
      "setFeats, augmentation 0\n",
      "WeightedRandomSampler\n",
      "dataset train: 17369 valid: 4384 loader train: 542 valid: 137\n",
      "loading model model.b2.f0.d14.v36\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.426 time per batch: 0.429\n",
      "Batch 100 device: cuda time passed: 38.129 time per batch: 0.381\n",
      "Batch 150 device: cuda time passed: 53.906 time per batch: 0.359\n",
      "Batch 200 device: cuda time passed: 70.144 time per batch: 0.351\n",
      "Batch 250 device: cuda time passed: 86.070 time per batch: 0.344\n",
      "Batch 300 device: cuda time passed: 102.134 time per batch: 0.340\n",
      "Batch 350 device: cuda time passed: 118.405 time per batch: 0.338\n",
      "Batch 400 device: cuda time passed: 134.645 time per batch: 0.337\n",
      "Batch 450 device: cuda time passed: 155.131 time per batch: 0.345\n",
      "Batch 500 device: cuda time passed: 171.499 time per batch: 0.343\n",
      "Batch 50 device: cuda time passed: 8.219 time per batch: 0.164\n",
      "Batch 100 device: cuda time passed: 14.580 time per batch: 0.146\n",
      "v36, d14, e3, f0, trn ll: 0.0298, val ll: 0.0595, ll_w: 0.0575, cor: 0.8472, auc: 0.9893, lr: 5e-06\n",
      "total running time 213.19121074676514\n",
      "total time 671.833601474762\n",
      "completed epochs: 0 starting now: 2\n",
      "DataSet 14 train size 17468 fold 1\n",
      "adding dummy serieses 12\n",
      "DataSet 14 valid size 4288 fold 1\n",
      "setFeats, augmentation 0\n",
      "WeightedRandomSampler\n",
      "dataset train: 17468 valid: 4288 loader train: 545 valid: 134\n",
      "loading model model.b13.f1.d14.v35\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.207 time per batch: 0.424\n",
      "Batch 100 device: cuda time passed: 37.348 time per batch: 0.373\n",
      "Batch 150 device: cuda time passed: 53.336 time per batch: 0.356\n",
      "Batch 200 device: cuda time passed: 69.851 time per batch: 0.349\n",
      "Batch 250 device: cuda time passed: 86.062 time per batch: 0.344\n",
      "Batch 300 device: cuda time passed: 102.322 time per batch: 0.341\n",
      "Batch 350 device: cuda time passed: 119.087 time per batch: 0.340\n",
      "Batch 400 device: cuda time passed: 135.502 time per batch: 0.339\n",
      "Batch 450 device: cuda time passed: 154.983 time per batch: 0.344\n",
      "Batch 500 device: cuda time passed: 172.005 time per batch: 0.344\n",
      "Batch 50 device: cuda time passed: 8.149 time per batch: 0.163\n",
      "Batch 100 device: cuda time passed: 14.844 time per batch: 0.148\n",
      "v36, d14, e1, f1, trn ll: 0.0290, val ll: 0.0593, ll_w: 0.0580, cor: 0.8483, auc: 0.9901, lr: 1e-05\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 20.749 time per batch: 0.415\n",
      "Batch 100 device: cuda time passed: 37.137 time per batch: 0.371\n",
      "Batch 150 device: cuda time passed: 53.310 time per batch: 0.355\n",
      "Batch 200 device: cuda time passed: 69.517 time per batch: 0.348\n",
      "Batch 250 device: cuda time passed: 85.902 time per batch: 0.344\n",
      "Batch 300 device: cuda time passed: 101.682 time per batch: 0.339\n",
      "Batch 350 device: cuda time passed: 118.095 time per batch: 0.337\n",
      "Batch 400 device: cuda time passed: 134.853 time per batch: 0.337\n",
      "Batch 450 device: cuda time passed: 155.186 time per batch: 0.345\n",
      "Batch 500 device: cuda time passed: 171.021 time per batch: 0.342\n",
      "Batch 50 device: cuda time passed: 7.627 time per batch: 0.153\n",
      "Batch 100 device: cuda time passed: 13.832 time per batch: 0.138\n",
      "v36, d14, e2, f1, trn ll: 0.0294, val ll: 0.0592, ll_w: 0.0579, cor: 0.8485, auc: 0.9901, lr: 1e-05\n",
      "total running time 450.5849003791809\n",
      "completed epochs: 2 starting now: 1\n",
      "DataSet 14 train size 17468 fold 1\n",
      "adding dummy serieses 12\n",
      "DataSet 14 valid size 4288 fold 1\n",
      "setFeats, augmentation 0\n",
      "WeightedRandomSampler\n",
      "dataset train: 17468 valid: 4288 loader train: 545 valid: 134\n",
      "loading model model.b2.f1.d14.v36\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.513 time per batch: 0.430\n",
      "Batch 100 device: cuda time passed: 37.783 time per batch: 0.378\n",
      "Batch 150 device: cuda time passed: 53.955 time per batch: 0.360\n",
      "Batch 200 device: cuda time passed: 70.656 time per batch: 0.353\n",
      "Batch 250 device: cuda time passed: 86.881 time per batch: 0.348\n",
      "Batch 300 device: cuda time passed: 102.464 time per batch: 0.342\n",
      "Batch 350 device: cuda time passed: 119.210 time per batch: 0.341\n",
      "Batch 400 device: cuda time passed: 135.295 time per batch: 0.338\n",
      "Batch 450 device: cuda time passed: 155.318 time per batch: 0.345\n",
      "Batch 500 device: cuda time passed: 171.368 time per batch: 0.343\n",
      "Batch 50 device: cuda time passed: 8.426 time per batch: 0.169\n",
      "Batch 100 device: cuda time passed: 14.857 time per batch: 0.149\n",
      "v36, d14, e3, f1, trn ll: 0.0287, val ll: 0.0593, ll_w: 0.0580, cor: 0.8484, auc: 0.9900, lr: 5e-06\n",
      "total running time 213.8144974708557\n",
      "total time 1336.568071603775\n",
      "completed epochs: 0 starting now: 2\n",
      "DataSet 14 train size 17355 fold 2\n",
      "adding dummy serieses 27\n",
      "DataSet 14 valid size 4416 fold 2\n",
      "setFeats, augmentation 0\n",
      "WeightedRandomSampler\n",
      "dataset train: 17355 valid: 4416 loader train: 542 valid: 138\n",
      "loading model model.b13.f2.d14.v35\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.352 time per batch: 0.427\n",
      "Batch 100 device: cuda time passed: 37.326 time per batch: 0.373\n",
      "Batch 150 device: cuda time passed: 53.162 time per batch: 0.354\n",
      "Batch 200 device: cuda time passed: 68.927 time per batch: 0.345\n",
      "Batch 250 device: cuda time passed: 84.995 time per batch: 0.340\n",
      "Batch 300 device: cuda time passed: 101.175 time per batch: 0.337\n",
      "Batch 350 device: cuda time passed: 117.550 time per batch: 0.336\n",
      "Batch 400 device: cuda time passed: 134.080 time per batch: 0.335\n",
      "Batch 450 device: cuda time passed: 153.286 time per batch: 0.341\n",
      "Batch 500 device: cuda time passed: 169.635 time per batch: 0.339\n",
      "Batch 50 device: cuda time passed: 8.047 time per batch: 0.161\n",
      "Batch 100 device: cuda time passed: 14.520 time per batch: 0.145\n",
      "v36, d14, e1, f2, trn ll: 0.0284, val ll: 0.0606, ll_w: 0.0577, cor: 0.8449, auc: 0.9889, lr: 1e-05\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 20.672 time per batch: 0.413\n",
      "Batch 100 device: cuda time passed: 37.469 time per batch: 0.375\n",
      "Batch 150 device: cuda time passed: 54.116 time per batch: 0.361\n",
      "Batch 200 device: cuda time passed: 69.517 time per batch: 0.348\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Batch 250 device: cuda time passed: 86.149 time per batch: 0.345\n",
      "Batch 300 device: cuda time passed: 102.999 time per batch: 0.343\n",
      "Batch 350 device: cuda time passed: 119.363 time per batch: 0.341\n",
      "Batch 400 device: cuda time passed: 135.685 time per batch: 0.339\n",
      "Batch 450 device: cuda time passed: 152.529 time per batch: 0.339\n",
      "Batch 500 device: cuda time passed: 172.402 time per batch: 0.345\n",
      "Batch 50 device: cuda time passed: 8.181 time per batch: 0.164\n",
      "Batch 100 device: cuda time passed: 14.485 time per batch: 0.145\n",
      "v36, d14, e2, f2, trn ll: 0.0292, val ll: 0.0600, ll_w: 0.0571, cor: 0.8455, auc: 0.9891, lr: 1e-05\n",
      "total running time 443.0156455039978\n",
      "completed epochs: 2 starting now: 1\n",
      "DataSet 14 train size 17355 fold 2\n",
      "adding dummy serieses 27\n",
      "DataSet 14 valid size 4416 fold 2\n",
      "setFeats, augmentation 0\n",
      "WeightedRandomSampler\n",
      "dataset train: 17355 valid: 4416 loader train: 542 valid: 138\n",
      "loading model model.b2.f2.d14.v36\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 20.755 time per batch: 0.415\n",
      "Batch 100 device: cuda time passed: 36.901 time per batch: 0.369\n",
      "Batch 150 device: cuda time passed: 52.968 time per batch: 0.353\n",
      "Batch 200 device: cuda time passed: 69.214 time per batch: 0.346\n",
      "Batch 250 device: cuda time passed: 85.613 time per batch: 0.342\n",
      "Batch 300 device: cuda time passed: 102.234 time per batch: 0.341\n",
      "Batch 350 device: cuda time passed: 118.636 time per batch: 0.339\n",
      "Batch 400 device: cuda time passed: 135.389 time per batch: 0.338\n",
      "Batch 450 device: cuda time passed: 155.574 time per batch: 0.346\n",
      "Batch 500 device: cuda time passed: 171.428 time per batch: 0.343\n",
      "Batch 50 device: cuda time passed: 8.167 time per batch: 0.163\n",
      "Batch 100 device: cuda time passed: 14.550 time per batch: 0.145\n",
      "v36, d14, e3, f2, trn ll: 0.0292, val ll: 0.0600, ll_w: 0.0571, cor: 0.8454, auc: 0.9892, lr: 5e-06\n",
      "total running time 213.9665548801422\n",
      "total time 1993.8867774009705\n",
      "completed epochs: 0 starting now: 2\n",
      "DataSet 14 train size 17408 fold 3\n",
      "adding dummy serieses 16\n",
      "DataSet 14 valid size 4352 fold 3\n",
      "setFeats, augmentation 0\n",
      "WeightedRandomSampler\n",
      "dataset train: 17408 valid: 4352 loader train: 544 valid: 136\n",
      "loading model model.b13.f3.d14.v35\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 21.250 time per batch: 0.425\n",
      "Batch 100 device: cuda time passed: 37.196 time per batch: 0.372\n",
      "Batch 150 device: cuda time passed: 53.011 time per batch: 0.353\n",
      "Batch 200 device: cuda time passed: 69.612 time per batch: 0.348\n",
      "Batch 250 device: cuda time passed: 85.879 time per batch: 0.344\n",
      "Batch 300 device: cuda time passed: 102.447 time per batch: 0.341\n",
      "Batch 350 device: cuda time passed: 118.245 time per batch: 0.338\n",
      "Batch 400 device: cuda time passed: 135.061 time per batch: 0.338\n",
      "Batch 450 device: cuda time passed: 153.103 time per batch: 0.340\n",
      "Batch 500 device: cuda time passed: 170.886 time per batch: 0.342\n",
      "Batch 50 device: cuda time passed: 8.188 time per batch: 0.164\n",
      "Batch 100 device: cuda time passed: 14.597 time per batch: 0.146\n",
      "v36, d14, e1, f3, trn ll: 0.0290, val ll: 0.0626, ll_w: 0.0604, cor: 0.8411, auc: 0.9889, lr: 1e-05\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 20.856 time per batch: 0.417\n",
      "Batch 100 device: cuda time passed: 36.492 time per batch: 0.365\n",
      "Batch 150 device: cuda time passed: 52.552 time per batch: 0.350\n",
      "Batch 200 device: cuda time passed: 68.865 time per batch: 0.344\n",
      "Batch 250 device: cuda time passed: 85.231 time per batch: 0.341\n",
      "Batch 300 device: cuda time passed: 102.115 time per batch: 0.340\n",
      "Batch 350 device: cuda time passed: 118.472 time per batch: 0.338\n",
      "Batch 400 device: cuda time passed: 134.599 time per batch: 0.336\n",
      "Batch 450 device: cuda time passed: 152.687 time per batch: 0.339\n",
      "Batch 500 device: cuda time passed: 170.115 time per batch: 0.340\n",
      "Batch 50 device: cuda time passed: 8.548 time per batch: 0.171\n",
      "Batch 100 device: cuda time passed: 14.807 time per batch: 0.148\n",
      "v36, d14, e2, f3, trn ll: 0.0295, val ll: 0.0629, ll_w: 0.0605, cor: 0.8408, auc: 0.9889, lr: 1e-05\n",
      "total running time 447.1415765285492\n",
      "completed epochs: 2 starting now: 1\n",
      "DataSet 14 train size 17408 fold 3\n",
      "adding dummy serieses 16\n",
      "DataSet 14 valid size 4352 fold 3\n",
      "setFeats, augmentation 0\n",
      "WeightedRandomSampler\n",
      "dataset train: 17408 valid: 4352 loader train: 544 valid: 136\n",
      "loading model model.b2.f3.d14.v36\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 20.516 time per batch: 0.410\n",
      "Batch 100 device: cuda time passed: 36.334 time per batch: 0.363\n",
      "Batch 150 device: cuda time passed: 53.084 time per batch: 0.354\n",
      "Batch 200 device: cuda time passed: 69.037 time per batch: 0.345\n",
      "Batch 250 device: cuda time passed: 85.908 time per batch: 0.344\n",
      "Batch 300 device: cuda time passed: 102.228 time per batch: 0.341\n",
      "Batch 350 device: cuda time passed: 118.540 time per batch: 0.339\n",
      "Batch 400 device: cuda time passed: 134.860 time per batch: 0.337\n",
      "Batch 450 device: cuda time passed: 153.588 time per batch: 0.341\n",
      "Batch 500 device: cuda time passed: 170.057 time per batch: 0.340\n",
      "Batch 50 device: cuda time passed: 8.858 time per batch: 0.177\n",
      "Batch 100 device: cuda time passed: 15.062 time per batch: 0.151\n",
      "v36, d14, e3, f3, trn ll: 0.0290, val ll: 0.0624, ll_w: 0.0601, cor: 0.8414, auc: 0.9889, lr: 5e-06\n",
      "total running time 212.96735048294067\n",
      "total time 2654.3308753967285\n",
      "completed epochs: 0 starting now: 2\n",
      "DataSet 14 train size 17376 fold 4\n",
      "adding dummy serieses 16\n",
      "DataSet 14 valid size 4384 fold 4\n",
      "setFeats, augmentation 0\n",
      "WeightedRandomSampler\n",
      "dataset train: 17376 valid: 4384 loader train: 543 valid: 137\n",
      "loading model model.b13.f4.d14.v35\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 20.938 time per batch: 0.419\n",
      "Batch 100 device: cuda time passed: 36.742 time per batch: 0.367\n",
      "Batch 150 device: cuda time passed: 53.118 time per batch: 0.354\n",
      "Batch 200 device: cuda time passed: 69.207 time per batch: 0.346\n",
      "Batch 250 device: cuda time passed: 85.657 time per batch: 0.343\n",
      "Batch 300 device: cuda time passed: 102.577 time per batch: 0.342\n",
      "Batch 350 device: cuda time passed: 118.931 time per batch: 0.340\n",
      "Batch 400 device: cuda time passed: 135.803 time per batch: 0.340\n",
      "Batch 450 device: cuda time passed: 152.349 time per batch: 0.339\n",
      "Batch 500 device: cuda time passed: 171.693 time per batch: 0.343\n",
      "Batch 50 device: cuda time passed: 8.196 time per batch: 0.164\n",
      "Batch 100 device: cuda time passed: 14.573 time per batch: 0.146\n",
      "v36, d14, e1, f4, trn ll: 0.0293, val ll: 0.0609, ll_w: 0.0584, cor: 0.8450, auc: 0.9886, lr: 1e-05\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 20.888 time per batch: 0.418\n",
      "Batch 100 device: cuda time passed: 37.072 time per batch: 0.371\n",
      "Batch 150 device: cuda time passed: 52.913 time per batch: 0.353\n",
      "Batch 200 device: cuda time passed: 69.316 time per batch: 0.347\n",
      "Batch 250 device: cuda time passed: 85.225 time per batch: 0.341\n",
      "Batch 300 device: cuda time passed: 101.227 time per batch: 0.337\n",
      "Batch 350 device: cuda time passed: 117.882 time per batch: 0.337\n",
      "Batch 400 device: cuda time passed: 134.412 time per batch: 0.336\n",
      "Batch 450 device: cuda time passed: 153.441 time per batch: 0.341\n",
      "Batch 500 device: cuda time passed: 169.712 time per batch: 0.339\n",
      "Batch 50 device: cuda time passed: 8.684 time per batch: 0.174\n",
      "Batch 100 device: cuda time passed: 15.135 time per batch: 0.151\n",
      "v36, d14, e2, f4, trn ll: 0.0288, val ll: 0.0610, ll_w: 0.0585, cor: 0.8453, auc: 0.9885, lr: 1e-05\n",
      "total running time 445.4769241809845\n",
      "completed epochs: 2 starting now: 1\n",
      "DataSet 14 train size 17376 fold 4\n",
      "adding dummy serieses 16\n",
      "DataSet 14 valid size 4384 fold 4\n",
      "setFeats, augmentation 0\n",
      "WeightedRandomSampler\n",
      "dataset train: 17376 valid: 4384 loader train: 543 valid: 137\n",
      "loading model model.b2.f4.d14.v36\n",
      "setFeats, augmentation -1\n",
      "Batch 50 device: cuda time passed: 20.951 time per batch: 0.419\n",
      "Batch 100 device: cuda time passed: 37.131 time per batch: 0.371\n",
      "Batch 150 device: cuda time passed: 53.374 time per batch: 0.356\n",
      "Batch 200 device: cuda time passed: 69.208 time per batch: 0.346\n",
      "Batch 250 device: cuda time passed: 85.747 time per batch: 0.343\n",
      "Batch 300 device: cuda time passed: 102.371 time per batch: 0.341\n",
      "Batch 350 device: cuda time passed: 118.719 time per batch: 0.339\n",
      "Batch 400 device: cuda time passed: 134.930 time per batch: 0.337\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Batch 450 device: cuda time passed: 154.019 time per batch: 0.342\n",
      "Batch 500 device: cuda time passed: 170.163 time per batch: 0.340\n",
      "Batch 50 device: cuda time passed: 7.538 time per batch: 0.151\n",
      "Batch 100 device: cuda time passed: 15.825 time per batch: 0.158\n",
      "v36, d14, e3, f4, trn ll: 0.0284, val ll: 0.0610, ll_w: 0.0585, cor: 0.8453, auc: 0.9885, lr: 5e-06\n",
      "total running time 213.95540952682495\n",
      "total time 3314.099096775055\n",
      "total time 3314.0992426872253\n",
      "total time 3314.099636554718\n"
     ]
    }
   ],
   "source": [
    "weight_decay = 1e-4\n",
    "lrs = np.array([1e-5, 5e-6])\n",
    "epochs = np.array([2, 1])\n",
    "stg = time.time()\n",
    "for ds in [14]:#my_datasets3+my_datasets5:\n",
    "    folds = getNFolds(ds)\n",
    "    #folds = 2\n",
    "    for f in range(folds):\n",
    "        for i,lr in enumerate(lrs):\n",
    "            learning_rate = lr\n",
    "            model, predictions, val_results = train_one(dataset=ds, epochs=epochs[i], bs=32, fold=f, init_ver=35)\n",
    "        print('total time', time.time() - stg)\n",
    "    print('total time', time.time() - stg)\n",
    "print('total time', time.time() - stg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "31 0 65 5 0\n",
      "31 1 65 5 0\n",
      "31 2 65 5 0\n",
      "31 3 39 3 0\n",
      "31 4 39 3 0\n",
      "33 0 65 5 0\n",
      "33 1 65 5 0\n",
      "33 2 65 5 0\n",
      "33 3 39 3 0\n",
      "33 4 39 3 0\n",
      "34 0 15 0 0\n",
      "34 1 15 0 0\n",
      "34 2 15 0 0\n",
      "34 3 9 0 0\n",
      "34 4 9 0 0\n",
      "35 0 13 1 0\n",
      "35 1 13 1 0\n",
      "35 2 13 1 0\n",
      "35 3 13 1 0\n",
      "35 4 13 1 0\n",
      "36 0 3 0 0\n",
      "36 1 3 0 0\n",
      "36 2 3 0 0\n",
      "36 3 3 0 0\n",
      "36 4 3 0 0\n"
     ]
    }
   ],
   "source": [
    "for ver in [31,33,34,35,36]:\n",
    "    for i in range(5):\n",
    "        stats_filename = PATH_WORK/'stats.f{}.v{}'.format(i,ver)\n",
    "        stats = pd.read_csv(stats_filename)\n",
    "        #stats = stats.loc[stats.epoch != 13]\n",
    "        #stats.to_csv(stats_filename, index=False)\n",
    "        print(ver,i,len(stats),len(stats.loc[stats.epoch==13]),len(stats.loc[stats.epoch>13]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats1 = pd.concat([pd.read_csv(PATH_WORK/'stats.f{}.v{}'.format(i,31)) for i in range(5)] +\n",
    "                   [pd.read_csv(PATH_WORK/'stats.f{}.v{}'.format(i,33)) for i in range(5)] + \n",
    "                   [pd.read_csv(PATH_WORK/'stats.f{}.v{}'.format(i,35)) for i in range(5)], axis=0, sort=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats1 = pd.concat([pd.read_csv(PATH_WORK/'stats.f{}.v{}'.format(i,33)) for i in range(5)] + \n",
    "                   [pd.read_csv(PATH_WORK/'stats.f{}.v{}'.format(i,35)) for i in range(5)], axis=0, sort=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>val_loss</th>\n",
       "      <th>val_w_loss</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>dataset</th>\n",
       "      <th>ver</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>33.0</td>\n",
       "      <td>0.062216</td>\n",
       "      <td>0.059966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>33.0</td>\n",
       "      <td>0.061798</td>\n",
       "      <td>0.059631</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>33.0</td>\n",
       "      <td>0.060567</td>\n",
       "      <td>0.058444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>33.0</td>\n",
       "      <td>0.060435</td>\n",
       "      <td>0.058339</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>33.0</td>\n",
       "      <td>0.060730</td>\n",
       "      <td>0.058572</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0.060279</td>\n",
       "      <td>0.058197</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              val_loss  val_w_loss\n",
       "dataset ver                       \n",
       "7       33.0  0.062216    0.059966\n",
       "9       33.0  0.061798    0.059631\n",
       "11      33.0  0.060567    0.058444\n",
       "12      33.0  0.060435    0.058339\n",
       "13      33.0  0.060730    0.058572\n",
       "14      35.0  0.060279    0.058197"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats1.loc[stats1.epoch==13].groupby(['dataset','ver'])['val_loss','val_w_loss'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "epoch\n",
       "1     0.069373\n",
       "2     0.066851\n",
       "3     0.066766\n",
       "4     0.065325\n",
       "5     0.063819\n",
       "6     0.063702\n",
       "7     0.063659\n",
       "8     0.063762\n",
       "9     0.063641\n",
       "10    0.063510\n",
       "11    0.063465\n",
       "12    0.063588\n",
       "13    0.058714\n",
       "Name: val_w_loss, dtype: float64"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats1.groupby('epoch')['val_w_loss'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "epoch\n",
       "1    0.058880\n",
       "2    0.058748\n",
       "3    0.058762\n",
       "Name: val_w_loss, dtype: float64"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats2.groupby('epoch')['val_w_loss'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ver</th>\n",
       "      <th>dataset</th>\n",
       "      <th>epoch</th>\n",
       "      <th>fold</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>val_loss</th>\n",
       "      <th>val_w_loss</th>\n",
       "      <th>val_loss2</th>\n",
       "      <th>val_w_loss2</th>\n",
       "      <th>cor</th>\n",
       "      <th>any</th>\n",
       "      <th>epidural</th>\n",
       "      <th>intraparenchymal</th>\n",
       "      <th>intraventricular</th>\n",
       "      <th>subarachnoid</th>\n",
       "      <th>subdural</th>\n",
       "      <th>train_sz</th>\n",
       "      <th>val_sz</th>\n",
       "      <th>bs</th>\n",
       "      <th>train_time</th>\n",
       "      <th>valid_time</th>\n",
       "      <th>lr</th>\n",
       "      <th>wd</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>34</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.026721</td>\n",
       "      <td>0.064065</td>\n",
       "      <td>0.061943</td>\n",
       "      <td>0.058069</td>\n",
       "      <td>0.041959</td>\n",
       "      <td>0.841664</td>\n",
       "      <td>0.094596</td>\n",
       "      <td>0.017690</td>\n",
       "      <td>0.048768</td>\n",
       "      <td>0.022488</td>\n",
       "      <td>0.050100</td>\n",
       "      <td>0.078243</td>\n",
       "      <td>14526</td>\n",
       "      <td>7232</td>\n",
       "      <td>32</td>\n",
       "      <td>188.513041</td>\n",
       "      <td>42.595724</td>\n",
       "      <td>0.000010</td>\n",
       "      <td>0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>34</td>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0.026779</td>\n",
       "      <td>0.063986</td>\n",
       "      <td>0.061799</td>\n",
       "      <td>0.058277</td>\n",
       "      <td>0.042019</td>\n",
       "      <td>0.841992</td>\n",
       "      <td>0.095012</td>\n",
       "      <td>0.017891</td>\n",
       "      <td>0.048536</td>\n",
       "      <td>0.022399</td>\n",
       "      <td>0.050454</td>\n",
       "      <td>0.078633</td>\n",
       "      <td>14526</td>\n",
       "      <td>7232</td>\n",
       "      <td>32</td>\n",
       "      <td>148.325198</td>\n",
       "      <td>42.840445</td>\n",
       "      <td>0.000010</td>\n",
       "      <td>0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>34</td>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.026806</td>\n",
       "      <td>0.063772</td>\n",
       "      <td>0.061700</td>\n",
       "      <td>0.057858</td>\n",
       "      <td>0.041902</td>\n",
       "      <td>0.841932</td>\n",
       "      <td>0.094341</td>\n",
       "      <td>0.017474</td>\n",
       "      <td>0.048568</td>\n",
       "      <td>0.022377</td>\n",
       "      <td>0.050502</td>\n",
       "      <td>0.077406</td>\n",
       "      <td>14526</td>\n",
       "      <td>7232</td>\n",
       "      <td>32</td>\n",
       "      <td>148.716054</td>\n",
       "      <td>42.719312</td>\n",
       "      <td>0.000005</td>\n",
       "      <td>0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>34</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.027112</td>\n",
       "      <td>0.063366</td>\n",
       "      <td>0.061400</td>\n",
       "      <td>0.059194</td>\n",
       "      <td>0.042473</td>\n",
       "      <td>0.842161</td>\n",
       "      <td>0.095822</td>\n",
       "      <td>0.016753</td>\n",
       "      <td>0.048794</td>\n",
       "      <td>0.022736</td>\n",
       "      <td>0.053430</td>\n",
       "      <td>0.081001</td>\n",
       "      <td>14526</td>\n",
       "      <td>7232</td>\n",
       "      <td>32</td>\n",
       "      <td>154.520063</td>\n",
       "      <td>41.107329</td>\n",
       "      <td>0.000010</td>\n",
       "      <td>0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>34</td>\n",
       "      <td>9</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0.028070</td>\n",
       "      <td>0.063492</td>\n",
       "      <td>0.061455</td>\n",
       "      <td>0.059902</td>\n",
       "      <td>0.042804</td>\n",
       "      <td>0.842046</td>\n",
       "      <td>0.097219</td>\n",
       "      <td>0.016762</td>\n",
       "      <td>0.048958</td>\n",
       "      <td>0.023702</td>\n",
       "      <td>0.053533</td>\n",
       "      <td>0.081922</td>\n",
       "      <td>14526</td>\n",
       "      <td>7232</td>\n",
       "      <td>32</td>\n",
       "      <td>136.198384</td>\n",
       "      <td>41.837500</td>\n",
       "      <td>0.000010</td>\n",
       "      <td>0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>36</td>\n",
       "      <td>14</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>0.029522</td>\n",
       "      <td>0.062853</td>\n",
       "      <td>0.060485</td>\n",
       "      <td>0.063770</td>\n",
       "      <td>0.045538</td>\n",
       "      <td>0.840799</td>\n",
       "      <td>0.101509</td>\n",
       "      <td>0.012685</td>\n",
       "      <td>0.049486</td>\n",
       "      <td>0.034019</td>\n",
       "      <td>0.059630</td>\n",
       "      <td>0.087555</td>\n",
       "      <td>17408</td>\n",
       "      <td>4352</td>\n",
       "      <td>32</td>\n",
       "      <td>195.092067</td>\n",
       "      <td>19.647925</td>\n",
       "      <td>0.000010</td>\n",
       "      <td>0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>36</td>\n",
       "      <td>14</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>0.029033</td>\n",
       "      <td>0.062372</td>\n",
       "      <td>0.060134</td>\n",
       "      <td>0.062729</td>\n",
       "      <td>0.044978</td>\n",
       "      <td>0.841355</td>\n",
       "      <td>0.099212</td>\n",
       "      <td>0.012550</td>\n",
       "      <td>0.048394</td>\n",
       "      <td>0.033793</td>\n",
       "      <td>0.059500</td>\n",
       "      <td>0.086445</td>\n",
       "      <td>17408</td>\n",
       "      <td>4352</td>\n",
       "      <td>32</td>\n",
       "      <td>188.747055</td>\n",
       "      <td>19.592905</td>\n",
       "      <td>0.000005</td>\n",
       "      <td>0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>36</td>\n",
       "      <td>14</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>0.029257</td>\n",
       "      <td>0.060873</td>\n",
       "      <td>0.058421</td>\n",
       "      <td>0.061626</td>\n",
       "      <td>0.045347</td>\n",
       "      <td>0.845014</td>\n",
       "      <td>0.102233</td>\n",
       "      <td>0.018479</td>\n",
       "      <td>0.052477</td>\n",
       "      <td>0.020628</td>\n",
       "      <td>0.056853</td>\n",
       "      <td>0.078477</td>\n",
       "      <td>17376</td>\n",
       "      <td>4384</td>\n",
       "      <td>32</td>\n",
       "      <td>208.909939</td>\n",
       "      <td>19.676935</td>\n",
       "      <td>0.000010</td>\n",
       "      <td>0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>36</td>\n",
       "      <td>14</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>0.028809</td>\n",
       "      <td>0.060978</td>\n",
       "      <td>0.058489</td>\n",
       "      <td>0.061709</td>\n",
       "      <td>0.045331</td>\n",
       "      <td>0.845300</td>\n",
       "      <td>0.102328</td>\n",
       "      <td>0.018075</td>\n",
       "      <td>0.052644</td>\n",
       "      <td>0.021467</td>\n",
       "      <td>0.056481</td>\n",
       "      <td>0.078641</td>\n",
       "      <td>17376</td>\n",
       "      <td>4384</td>\n",
       "      <td>32</td>\n",
       "      <td>192.605031</td>\n",
       "      <td>19.740591</td>\n",
       "      <td>0.000010</td>\n",
       "      <td>0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>36</td>\n",
       "      <td>14</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>0.028370</td>\n",
       "      <td>0.060988</td>\n",
       "      <td>0.058506</td>\n",
       "      <td>0.061573</td>\n",
       "      <td>0.045219</td>\n",
       "      <td>0.845341</td>\n",
       "      <td>0.102488</td>\n",
       "      <td>0.018332</td>\n",
       "      <td>0.052359</td>\n",
       "      <td>0.020422</td>\n",
       "      <td>0.056385</td>\n",
       "      <td>0.078535</td>\n",
       "      <td>17376</td>\n",
       "      <td>4384</td>\n",
       "      <td>32</td>\n",
       "      <td>189.093271</td>\n",
       "      <td>20.038952</td>\n",
       "      <td>0.000005</td>\n",
       "      <td>0.0001</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>78 rows × 23 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    ver  dataset  epoch  fold  train_loss  val_loss  val_w_loss  val_loss2  \\\n",
       "0    34        7      1     0    0.026721  0.064065    0.061943   0.058069   \n",
       "1    34        7      2     0    0.026779  0.063986    0.061799   0.058277   \n",
       "2    34        7      3     0    0.026806  0.063772    0.061700   0.057858   \n",
       "3    34        9      1     0    0.027112  0.063366    0.061400   0.059194   \n",
       "4    34        9      2     0    0.028070  0.063492    0.061455   0.059902   \n",
       "..  ...      ...    ...   ...         ...       ...         ...        ...   \n",
       "1    36       14      2     3    0.029522  0.062853    0.060485   0.063770   \n",
       "2    36       14      3     3    0.029033  0.062372    0.060134   0.062729   \n",
       "0    36       14      1     4    0.029257  0.060873    0.058421   0.061626   \n",
       "1    36       14      2     4    0.028809  0.060978    0.058489   0.061709   \n",
       "2    36       14      3     4    0.028370  0.060988    0.058506   0.061573   \n",
       "\n",
       "    val_w_loss2       cor       any  epidural  intraparenchymal  \\\n",
       "0      0.041959  0.841664  0.094596  0.017690          0.048768   \n",
       "1      0.042019  0.841992  0.095012  0.017891          0.048536   \n",
       "2      0.041902  0.841932  0.094341  0.017474          0.048568   \n",
       "3      0.042473  0.842161  0.095822  0.016753          0.048794   \n",
       "4      0.042804  0.842046  0.097219  0.016762          0.048958   \n",
       "..          ...       ...       ...       ...               ...   \n",
       "1      0.045538  0.840799  0.101509  0.012685          0.049486   \n",
       "2      0.044978  0.841355  0.099212  0.012550          0.048394   \n",
       "0      0.045347  0.845014  0.102233  0.018479          0.052477   \n",
       "1      0.045331  0.845300  0.102328  0.018075          0.052644   \n",
       "2      0.045219  0.845341  0.102488  0.018332          0.052359   \n",
       "\n",
       "    intraventricular  subarachnoid  subdural  train_sz  val_sz  bs  \\\n",
       "0           0.022488      0.050100  0.078243     14526    7232  32   \n",
       "1           0.022399      0.050454  0.078633     14526    7232  32   \n",
       "2           0.022377      0.050502  0.077406     14526    7232  32   \n",
       "3           0.022736      0.053430  0.081001     14526    7232  32   \n",
       "4           0.023702      0.053533  0.081922     14526    7232  32   \n",
       "..               ...           ...       ...       ...     ...  ..   \n",
       "1           0.034019      0.059630  0.087555     17408    4352  32   \n",
       "2           0.033793      0.059500  0.086445     17408    4352  32   \n",
       "0           0.020628      0.056853  0.078477     17376    4384  32   \n",
       "1           0.021467      0.056481  0.078641     17376    4384  32   \n",
       "2           0.020422      0.056385  0.078535     17376    4384  32   \n",
       "\n",
       "    train_time  valid_time        lr      wd  \n",
       "0   188.513041   42.595724  0.000010  0.0001  \n",
       "1   148.325198   42.840445  0.000010  0.0001  \n",
       "2   148.716054   42.719312  0.000005  0.0001  \n",
       "3   154.520063   41.107329  0.000010  0.0001  \n",
       "4   136.198384   41.837500  0.000010  0.0001  \n",
       "..         ...         ...       ...     ...  \n",
       "1   195.092067   19.647925  0.000010  0.0001  \n",
       "2   188.747055   19.592905  0.000005  0.0001  \n",
       "0   208.909939   19.676935  0.000010  0.0001  \n",
       "1   192.605031   19.740591  0.000010  0.0001  \n",
       "2   189.093271   20.038952  0.000005  0.0001  \n",
       "\n",
       "[78 rows x 23 columns]"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats1 = stats1.loc[stats1.epoch==13]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats2 = pd.concat([pd.read_csv(PATH_WORK/'stats.f{}.v{}'.format(i,34)) for i in range(5)] +\n",
    "                   [pd.read_csv(PATH_WORK/'stats.f{}.v{}'.format(i,36)) for i in range(5)], axis=0, sort=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>val_loss</th>\n",
       "      <th>val_w_loss</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>dataset</th>\n",
       "      <th>ver</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>34</td>\n",
       "      <td>0.062340</td>\n",
       "      <td>0.060022</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>34</td>\n",
       "      <td>0.061991</td>\n",
       "      <td>0.059712</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>34</td>\n",
       "      <td>0.060771</td>\n",
       "      <td>0.058518</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>34</td>\n",
       "      <td>0.060592</td>\n",
       "      <td>0.058365</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>34</td>\n",
       "      <td>0.060883</td>\n",
       "      <td>0.058596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>36</td>\n",
       "      <td>0.060440</td>\n",
       "      <td>0.058245</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             val_loss  val_w_loss\n",
       "dataset ver                      \n",
       "7       34   0.062340    0.060022\n",
       "9       34   0.061991    0.059712\n",
       "11      34   0.060771    0.058518\n",
       "12      34   0.060592    0.058365\n",
       "13      34   0.060883    0.058596\n",
       "14      36   0.060440    0.058245"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats2.loc[stats2.epoch==3].groupby(['dataset','ver'])['val_loss','val_w_loss'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats2 = stats2.loc[stats2.epoch==3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats1['weighted'] = False\n",
    "stats2['weighted'] = True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats = pd.concat([stats1,stats2],axis=0,sort=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats['name'] = [getDSName(ds) for ds in stats.dataset.values]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats['type'] = np.where(stats.ver.isin([31,32]), 'old feats, no stage1', \n",
    "                         np.where(stats.ver.isin([33,34]), 'old feats, with stage1', 'new feats, with stage 1'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats['name'] = pd.Categorical(stats['name'], \\\n",
    "    ['Densenet161_F3','se_resnext101_32x4d_F3','se_resnet101_F5','se_resnet101_focal_F5','se_resnext101_32x4d_F5'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats['type'] = pd.Categorical(stats['type'], \\\n",
    "    ['old feats, no stage1', 'old feats, with stage1', 'new feats, with stage 1'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats.val_loss2 = np.where(stats.val_loss2 == 0, np.nan, stats.val_loss2)\n",
    "stats.val_w_loss2 = np.where(stats.val_w_loss2 == 0, np.nan, stats.val_w_loss2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>val_loss</th>\n",
       "      <th>val_w_loss</th>\n",
       "      <th>val_loss2</th>\n",
       "      <th>val_w_loss2</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>name</th>\n",
       "      <th>weighted</th>\n",
       "      <th>type</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td rowspan=\"6\" valign=\"top\">Densenet161_F3</td>\n",
       "      <td rowspan=\"3\" valign=\"top\">False</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>0.062832</td>\n",
       "      <td>0.060421</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.062216</td>\n",
       "      <td>0.059966</td>\n",
       "      <td>0.063667</td>\n",
       "      <td>0.045864</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">True</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.062340</td>\n",
       "      <td>0.060022</td>\n",
       "      <td>0.064111</td>\n",
       "      <td>0.045960</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"6\" valign=\"top\">se_resnext101_32x4d_F3</td>\n",
       "      <td rowspan=\"3\" valign=\"top\">False</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>0.062391</td>\n",
       "      <td>0.060030</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.061798</td>\n",
       "      <td>0.059631</td>\n",
       "      <td>0.063498</td>\n",
       "      <td>0.045743</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">True</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.061991</td>\n",
       "      <td>0.059712</td>\n",
       "      <td>0.064051</td>\n",
       "      <td>0.045793</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"6\" valign=\"top\">se_resnet101_F5</td>\n",
       "      <td rowspan=\"3\" valign=\"top\">False</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>0.060777</td>\n",
       "      <td>0.058524</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.060435</td>\n",
       "      <td>0.058339</td>\n",
       "      <td>0.062473</td>\n",
       "      <td>0.045330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>0.060279</td>\n",
       "      <td>0.058197</td>\n",
       "      <td>0.059201</td>\n",
       "      <td>0.042987</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">True</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.060592</td>\n",
       "      <td>0.058365</td>\n",
       "      <td>0.063225</td>\n",
       "      <td>0.045505</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>0.060440</td>\n",
       "      <td>0.058245</td>\n",
       "      <td>0.059749</td>\n",
       "      <td>0.043057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"6\" valign=\"top\">se_resnet101_focal_F5</td>\n",
       "      <td rowspan=\"3\" valign=\"top\">False</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>0.061076</td>\n",
       "      <td>0.058784</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.060730</td>\n",
       "      <td>0.058572</td>\n",
       "      <td>0.062898</td>\n",
       "      <td>0.045629</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">True</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.060883</td>\n",
       "      <td>0.058596</td>\n",
       "      <td>0.063621</td>\n",
       "      <td>0.045774</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"6\" valign=\"top\">se_resnext101_32x4d_F5</td>\n",
       "      <td rowspan=\"3\" valign=\"top\">False</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>0.061160</td>\n",
       "      <td>0.058838</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.060567</td>\n",
       "      <td>0.058444</td>\n",
       "      <td>0.063178</td>\n",
       "      <td>0.045846</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">True</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.060771</td>\n",
       "      <td>0.058518</td>\n",
       "      <td>0.063957</td>\n",
       "      <td>0.046079</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         val_loss  val_w_loss  \\\n",
       "name                   weighted type                                            \n",
       "Densenet161_F3         False    old feats, no stage1     0.062832    0.060421   \n",
       "                                old feats, with stage1   0.062216    0.059966   \n",
       "                                new feats, with stage 1       NaN         NaN   \n",
       "                       True     old feats, no stage1          NaN         NaN   \n",
       "                                old feats, with stage1   0.062340    0.060022   \n",
       "                                new feats, with stage 1       NaN         NaN   \n",
       "se_resnext101_32x4d_F3 False    old feats, no stage1     0.062391    0.060030   \n",
       "                                old feats, with stage1   0.061798    0.059631   \n",
       "                                new feats, with stage 1       NaN         NaN   \n",
       "                       True     old feats, no stage1          NaN         NaN   \n",
       "                                old feats, with stage1   0.061991    0.059712   \n",
       "                                new feats, with stage 1       NaN         NaN   \n",
       "se_resnet101_F5        False    old feats, no stage1     0.060777    0.058524   \n",
       "                                old feats, with stage1   0.060435    0.058339   \n",
       "                                new feats, with stage 1  0.060279    0.058197   \n",
       "                       True     old feats, no stage1          NaN         NaN   \n",
       "                                old feats, with stage1   0.060592    0.058365   \n",
       "                                new feats, with stage 1  0.060440    0.058245   \n",
       "se_resnet101_focal_F5  False    old feats, no stage1     0.061076    0.058784   \n",
       "                                old feats, with stage1   0.060730    0.058572   \n",
       "                                new feats, with stage 1       NaN         NaN   \n",
       "                       True     old feats, no stage1          NaN         NaN   \n",
       "                                old feats, with stage1   0.060883    0.058596   \n",
       "                                new feats, with stage 1       NaN         NaN   \n",
       "se_resnext101_32x4d_F5 False    old feats, no stage1     0.061160    0.058838   \n",
       "                                old feats, with stage1   0.060567    0.058444   \n",
       "                                new feats, with stage 1       NaN         NaN   \n",
       "                       True     old feats, no stage1          NaN         NaN   \n",
       "                                old feats, with stage1   0.060771    0.058518   \n",
       "                                new feats, with stage 1       NaN         NaN   \n",
       "\n",
       "                                                         val_loss2  \\\n",
       "name                   weighted type                                 \n",
       "Densenet161_F3         False    old feats, no stage1           NaN   \n",
       "                                old feats, with stage1    0.063667   \n",
       "                                new feats, with stage 1        NaN   \n",
       "                       True     old feats, no stage1           NaN   \n",
       "                                old feats, with stage1    0.064111   \n",
       "                                new feats, with stage 1        NaN   \n",
       "se_resnext101_32x4d_F3 False    old feats, no stage1           NaN   \n",
       "                                old feats, with stage1    0.063498   \n",
       "                                new feats, with stage 1        NaN   \n",
       "                       True     old feats, no stage1           NaN   \n",
       "                                old feats, with stage1    0.064051   \n",
       "                                new feats, with stage 1        NaN   \n",
       "se_resnet101_F5        False    old feats, no stage1           NaN   \n",
       "                                old feats, with stage1    0.062473   \n",
       "                                new feats, with stage 1   0.059201   \n",
       "                       True     old feats, no stage1           NaN   \n",
       "                                old feats, with stage1    0.063225   \n",
       "                                new feats, with stage 1   0.059749   \n",
       "se_resnet101_focal_F5  False    old feats, no stage1           NaN   \n",
       "                                old feats, with stage1    0.062898   \n",
       "                                new feats, with stage 1        NaN   \n",
       "                       True     old feats, no stage1           NaN   \n",
       "                                old feats, with stage1    0.063621   \n",
       "                                new feats, with stage 1        NaN   \n",
       "se_resnext101_32x4d_F5 False    old feats, no stage1           NaN   \n",
       "                                old feats, with stage1    0.063178   \n",
       "                                new feats, with stage 1        NaN   \n",
       "                       True     old feats, no stage1           NaN   \n",
       "                                old feats, with stage1    0.063957   \n",
       "                                new feats, with stage 1        NaN   \n",
       "\n",
       "                                                         val_w_loss2  \n",
       "name                   weighted type                                  \n",
       "Densenet161_F3         False    old feats, no stage1             NaN  \n",
       "                                old feats, with stage1      0.045864  \n",
       "                                new feats, with stage 1          NaN  \n",
       "                       True     old feats, no stage1             NaN  \n",
       "                                old feats, with stage1      0.045960  \n",
       "                                new feats, with stage 1          NaN  \n",
       "se_resnext101_32x4d_F3 False    old feats, no stage1             NaN  \n",
       "                                old feats, with stage1      0.045743  \n",
       "                                new feats, with stage 1          NaN  \n",
       "                       True     old feats, no stage1             NaN  \n",
       "                                old feats, with stage1      0.045793  \n",
       "                                new feats, with stage 1          NaN  \n",
       "se_resnet101_F5        False    old feats, no stage1             NaN  \n",
       "                                old feats, with stage1      0.045330  \n",
       "                                new feats, with stage 1     0.042987  \n",
       "                       True     old feats, no stage1             NaN  \n",
       "                                old feats, with stage1      0.045505  \n",
       "                                new feats, with stage 1     0.043057  \n",
       "se_resnet101_focal_F5  False    old feats, no stage1             NaN  \n",
       "                                old feats, with stage1      0.045629  \n",
       "                                new feats, with stage 1          NaN  \n",
       "                       True     old feats, no stage1             NaN  \n",
       "                                old feats, with stage1      0.045774  \n",
       "                                new feats, with stage 1          NaN  \n",
       "se_resnext101_32x4d_F5 False    old feats, no stage1             NaN  \n",
       "                                old feats, with stage1      0.045846  \n",
       "                                new feats, with stage 1          NaN  \n",
       "                       True     old feats, no stage1             NaN  \n",
       "                                old feats, with stage1      0.046079  \n",
       "                                new feats, with stage 1          NaN  "
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats.groupby(['name','weighted','type'])['val_loss','val_w_loss','val_loss2','val_w_loss2'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>val_loss</th>\n",
       "      <th>val_w_loss</th>\n",
       "      <th>val_loss2</th>\n",
       "      <th>val_w_loss2</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>fold</th>\n",
       "      <th>weighted</th>\n",
       "      <th>type</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td rowspan=\"6\" valign=\"top\">0</td>\n",
       "      <td rowspan=\"3\" valign=\"top\">False</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>0.059207</td>\n",
       "      <td>0.057173</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.059376</td>\n",
       "      <td>0.057322</td>\n",
       "      <td>0.071586</td>\n",
       "      <td>0.052126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>0.059336</td>\n",
       "      <td>0.057380</td>\n",
       "      <td>0.067331</td>\n",
       "      <td>0.048938</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">True</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.059580</td>\n",
       "      <td>0.057412</td>\n",
       "      <td>0.072157</td>\n",
       "      <td>0.052435</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>0.059511</td>\n",
       "      <td>0.057492</td>\n",
       "      <td>0.067691</td>\n",
       "      <td>0.049024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"6\" valign=\"top\">1</td>\n",
       "      <td rowspan=\"3\" valign=\"top\">False</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>0.059903</td>\n",
       "      <td>0.058524</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.059548</td>\n",
       "      <td>0.058294</td>\n",
       "      <td>0.055482</td>\n",
       "      <td>0.040188</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>0.059209</td>\n",
       "      <td>0.057936</td>\n",
       "      <td>0.052200</td>\n",
       "      <td>0.038043</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">True</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.059670</td>\n",
       "      <td>0.058308</td>\n",
       "      <td>0.056408</td>\n",
       "      <td>0.040399</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>0.059323</td>\n",
       "      <td>0.057955</td>\n",
       "      <td>0.052909</td>\n",
       "      <td>0.038214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"6\" valign=\"top\">2</td>\n",
       "      <td rowspan=\"3\" valign=\"top\">False</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>0.060600</td>\n",
       "      <td>0.057828</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.060391</td>\n",
       "      <td>0.057761</td>\n",
       "      <td>0.056373</td>\n",
       "      <td>0.040194</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>0.059884</td>\n",
       "      <td>0.057178</td>\n",
       "      <td>0.053371</td>\n",
       "      <td>0.037849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">True</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.060492</td>\n",
       "      <td>0.057737</td>\n",
       "      <td>0.056875</td>\n",
       "      <td>0.040117</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>0.060004</td>\n",
       "      <td>0.057138</td>\n",
       "      <td>0.053842</td>\n",
       "      <td>0.037853</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"6\" valign=\"top\">3</td>\n",
       "      <td rowspan=\"3\" valign=\"top\">False</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>0.062978</td>\n",
       "      <td>0.060445</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.062238</td>\n",
       "      <td>0.060029</td>\n",
       "      <td>0.063756</td>\n",
       "      <td>0.045654</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>0.062283</td>\n",
       "      <td>0.060144</td>\n",
       "      <td>0.062267</td>\n",
       "      <td>0.044982</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">True</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.062409</td>\n",
       "      <td>0.060069</td>\n",
       "      <td>0.064277</td>\n",
       "      <td>0.045677</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>0.062372</td>\n",
       "      <td>0.060134</td>\n",
       "      <td>0.062729</td>\n",
       "      <td>0.044978</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"6\" valign=\"top\">4</td>\n",
       "      <td rowspan=\"3\" valign=\"top\">False</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>0.061198</td>\n",
       "      <td>0.058650</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.060621</td>\n",
       "      <td>0.058288</td>\n",
       "      <td>0.065170</td>\n",
       "      <td>0.048486</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>0.060685</td>\n",
       "      <td>0.058348</td>\n",
       "      <td>0.060837</td>\n",
       "      <td>0.045122</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">True</td>\n",
       "      <td>old feats, no stage1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, with stage1</td>\n",
       "      <td>0.060810</td>\n",
       "      <td>0.058297</td>\n",
       "      <td>0.066407</td>\n",
       "      <td>0.048896</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>new feats, with stage 1</td>\n",
       "      <td>0.060988</td>\n",
       "      <td>0.058506</td>\n",
       "      <td>0.061573</td>\n",
       "      <td>0.045219</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                       val_loss  val_w_loss  val_loss2  \\\n",
       "fold weighted type                                                       \n",
       "0    False    old feats, no stage1     0.059207    0.057173        NaN   \n",
       "              old feats, with stage1   0.059376    0.057322   0.071586   \n",
       "              new feats, with stage 1  0.059336    0.057380   0.067331   \n",
       "     True     old feats, no stage1          NaN         NaN        NaN   \n",
       "              old feats, with stage1   0.059580    0.057412   0.072157   \n",
       "              new feats, with stage 1  0.059511    0.057492   0.067691   \n",
       "1    False    old feats, no stage1     0.059903    0.058524        NaN   \n",
       "              old feats, with stage1   0.059548    0.058294   0.055482   \n",
       "              new feats, with stage 1  0.059209    0.057936   0.052200   \n",
       "     True     old feats, no stage1          NaN         NaN        NaN   \n",
       "              old feats, with stage1   0.059670    0.058308   0.056408   \n",
       "              new feats, with stage 1  0.059323    0.057955   0.052909   \n",
       "2    False    old feats, no stage1     0.060600    0.057828        NaN   \n",
       "              old feats, with stage1   0.060391    0.057761   0.056373   \n",
       "              new feats, with stage 1  0.059884    0.057178   0.053371   \n",
       "     True     old feats, no stage1          NaN         NaN        NaN   \n",
       "              old feats, with stage1   0.060492    0.057737   0.056875   \n",
       "              new feats, with stage 1  0.060004    0.057138   0.053842   \n",
       "3    False    old feats, no stage1     0.062978    0.060445        NaN   \n",
       "              old feats, with stage1   0.062238    0.060029   0.063756   \n",
       "              new feats, with stage 1  0.062283    0.060144   0.062267   \n",
       "     True     old feats, no stage1          NaN         NaN        NaN   \n",
       "              old feats, with stage1   0.062409    0.060069   0.064277   \n",
       "              new feats, with stage 1  0.062372    0.060134   0.062729   \n",
       "4    False    old feats, no stage1     0.061198    0.058650        NaN   \n",
       "              old feats, with stage1   0.060621    0.058288   0.065170   \n",
       "              new feats, with stage 1  0.060685    0.058348   0.060837   \n",
       "     True     old feats, no stage1          NaN         NaN        NaN   \n",
       "              old feats, with stage1   0.060810    0.058297   0.066407   \n",
       "              new feats, with stage 1  0.060988    0.058506   0.061573   \n",
       "\n",
       "                                       val_w_loss2  \n",
       "fold weighted type                                  \n",
       "0    False    old feats, no stage1             NaN  \n",
       "              old feats, with stage1      0.052126  \n",
       "              new feats, with stage 1     0.048938  \n",
       "     True     old feats, no stage1             NaN  \n",
       "              old feats, with stage1      0.052435  \n",
       "              new feats, with stage 1     0.049024  \n",
       "1    False    old feats, no stage1             NaN  \n",
       "              old feats, with stage1      0.040188  \n",
       "              new feats, with stage 1     0.038043  \n",
       "     True     old feats, no stage1             NaN  \n",
       "              old feats, with stage1      0.040399  \n",
       "              new feats, with stage 1     0.038214  \n",
       "2    False    old feats, no stage1             NaN  \n",
       "              old feats, with stage1      0.040194  \n",
       "              new feats, with stage 1     0.037849  \n",
       "     True     old feats, no stage1             NaN  \n",
       "              old feats, with stage1      0.040117  \n",
       "              new feats, with stage 1     0.037853  \n",
       "3    False    old feats, no stage1             NaN  \n",
       "              old feats, with stage1      0.045654  \n",
       "              new feats, with stage 1     0.044982  \n",
       "     True     old feats, no stage1             NaN  \n",
       "              old feats, with stage1      0.045677  \n",
       "              new feats, with stage 1     0.044978  \n",
       "4    False    old feats, no stage1             NaN  \n",
       "              old feats, with stage1      0.048486  \n",
       "              new feats, with stage 1     0.045122  \n",
       "     True     old feats, no stage1             NaN  \n",
       "              old feats, with stage1      0.048896  \n",
       "              new feats, with stage 1     0.045219  "
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats.loc[stats.name=='se_resnet101_F5']\\\n",
    "    .groupby(['fold','weighted','type'])['val_loss','val_w_loss','val_loss2','val_w_loss2'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "14    5\n",
       "13    5\n",
       "12    5\n",
       "11    5\n",
       "9     3\n",
       "7     3\n",
       "Name: dataset, dtype: int64"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats2.dataset.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats2 = pd.concat([pd.read_csv(PATH_WORK/'stats.f{}.v{}'.format(0,32)),\n",
    "                    pd.read_csv(PATH_WORK/'stats.f{}.v{}'.format(1,32)),\n",
    "                    pd.read_csv(PATH_WORK/'stats.f{}.v{}'.format(0,34)),\n",
    "                    pd.read_csv(PATH_WORK/'stats.f{}.v{}'.format(1,34))], axis=0, sort=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>dataset</th>\n",
       "      <th>epoch</th>\n",
       "      <th>fold</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>val_loss</th>\n",
       "      <th>val_w_loss</th>\n",
       "      <th>val_loss2</th>\n",
       "      <th>val_w_loss2</th>\n",
       "      <th>cor</th>\n",
       "      <th>any</th>\n",
       "      <th>epidural</th>\n",
       "      <th>intraparenchymal</th>\n",
       "      <th>intraventricular</th>\n",
       "      <th>subarachnoid</th>\n",
       "      <th>subdural</th>\n",
       "      <th>train_sz</th>\n",
       "      <th>val_sz</th>\n",
       "      <th>bs</th>\n",
       "      <th>train_time</th>\n",
       "      <th>valid_time</th>\n",
       "      <th>lr</th>\n",
       "      <th>wd</th>\n",
       "      <th>ver</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "      <td>0</td>\n",
       "      <td>0.031208</td>\n",
       "      <td>0.059201</td>\n",
       "      <td>0.064282</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.847493</td>\n",
       "      <td>0.094982</td>\n",
       "      <td>0.014763</td>\n",
       "      <td>0.044750</td>\n",
       "      <td>0.025390</td>\n",
       "      <td>0.064951</td>\n",
       "      <td>0.074592</td>\n",
       "      <td>15619</td>\n",
       "      <td>3936</td>\n",
       "      <td>32</td>\n",
       "      <td>85.367667</td>\n",
       "      <td>10.784082</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25</td>\n",
       "      <td>14</td>\n",
       "      <td>13</td>\n",
       "      <td>0</td>\n",
       "      <td>0.031730</td>\n",
       "      <td>0.059394</td>\n",
       "      <td>0.063065</td>\n",
       "      <td>0.067177</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.847427</td>\n",
       "      <td>0.114279</td>\n",
       "      <td>0.018076</td>\n",
       "      <td>0.043661</td>\n",
       "      <td>0.037124</td>\n",
       "      <td>0.069421</td>\n",
       "      <td>0.073398</td>\n",
       "      <td>17369</td>\n",
       "      <td>4384</td>\n",
       "      <td>32</td>\n",
       "      <td>101.753389</td>\n",
       "      <td>11.775365</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "      <td>1</td>\n",
       "      <td>0.031786</td>\n",
       "      <td>0.059864</td>\n",
       "      <td>0.058066</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.846629</td>\n",
       "      <td>0.097579</td>\n",
       "      <td>0.014948</td>\n",
       "      <td>0.040305</td>\n",
       "      <td>0.025653</td>\n",
       "      <td>0.063112</td>\n",
       "      <td>0.079871</td>\n",
       "      <td>15699</td>\n",
       "      <td>3840</td>\n",
       "      <td>32</td>\n",
       "      <td>85.526455</td>\n",
       "      <td>10.400574</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25</td>\n",
       "      <td>14</td>\n",
       "      <td>13</td>\n",
       "      <td>1</td>\n",
       "      <td>0.031240</td>\n",
       "      <td>0.059391</td>\n",
       "      <td>0.057033</td>\n",
       "      <td>0.052189</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.848211</td>\n",
       "      <td>0.093570</td>\n",
       "      <td>0.009090</td>\n",
       "      <td>0.037775</td>\n",
       "      <td>0.020982</td>\n",
       "      <td>0.047940</td>\n",
       "      <td>0.062393</td>\n",
       "      <td>17468</td>\n",
       "      <td>4288</td>\n",
       "      <td>32</td>\n",
       "      <td>103.794368</td>\n",
       "      <td>11.503633</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "      <td>0</td>\n",
       "      <td>0.031486</td>\n",
       "      <td>0.059400</td>\n",
       "      <td>0.063696</td>\n",
       "      <td>0.071379</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.847333</td>\n",
       "      <td>0.121656</td>\n",
       "      <td>0.020638</td>\n",
       "      <td>0.043654</td>\n",
       "      <td>0.038130</td>\n",
       "      <td>0.077089</td>\n",
       "      <td>0.076830</td>\n",
       "      <td>17369</td>\n",
       "      <td>4384</td>\n",
       "      <td>32</td>\n",
       "      <td>99.668121</td>\n",
       "      <td>10.958552</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>33.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "      <td>1</td>\n",
       "      <td>0.032215</td>\n",
       "      <td>0.059726</td>\n",
       "      <td>0.057000</td>\n",
       "      <td>0.055488</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.846940</td>\n",
       "      <td>0.098863</td>\n",
       "      <td>0.011571</td>\n",
       "      <td>0.040962</td>\n",
       "      <td>0.021129</td>\n",
       "      <td>0.051022</td>\n",
       "      <td>0.066003</td>\n",
       "      <td>17468</td>\n",
       "      <td>4288</td>\n",
       "      <td>32</td>\n",
       "      <td>103.740352</td>\n",
       "      <td>10.660052</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>33.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    dataset  epoch  fold  train_loss  val_loss  val_w_loss  val_loss2  \\\n",
       "12       12     13     0    0.031208  0.059201    0.064282   0.000000   \n",
       "25       14     13     0    0.031730  0.059394    0.063065   0.067177   \n",
       "12       12     13     1    0.031786  0.059864    0.058066   0.000000   \n",
       "25       14     13     1    0.031240  0.059391    0.057033   0.052189   \n",
       "12       12     13     0    0.031486  0.059400    0.063696   0.071379   \n",
       "12       12     13     1    0.032215  0.059726    0.057000   0.055488   \n",
       "\n",
       "    val_w_loss2       cor       any  epidural  intraparenchymal  \\\n",
       "12          0.0  0.847493  0.094982  0.014763          0.044750   \n",
       "25          NaN  0.847427  0.114279  0.018076          0.043661   \n",
       "12          0.0  0.846629  0.097579  0.014948          0.040305   \n",
       "25          NaN  0.848211  0.093570  0.009090          0.037775   \n",
       "12          NaN  0.847333  0.121656  0.020638          0.043654   \n",
       "12          NaN  0.846940  0.098863  0.011571          0.040962   \n",
       "\n",
       "    intraventricular  subarachnoid  subdural  train_sz  val_sz  bs  \\\n",
       "12          0.025390      0.064951  0.074592     15619    3936  32   \n",
       "25          0.037124      0.069421  0.073398     17369    4384  32   \n",
       "12          0.025653      0.063112  0.079871     15699    3840  32   \n",
       "25          0.020982      0.047940  0.062393     17468    4288  32   \n",
       "12          0.038130      0.077089  0.076830     17369    4384  32   \n",
       "12          0.021129      0.051022  0.066003     17468    4288  32   \n",
       "\n",
       "    train_time  valid_time        lr      wd   ver  \n",
       "12   85.367667   10.784082  0.000002  0.0001   NaN  \n",
       "25  101.753389   11.775365  0.000002  0.0001   NaN  \n",
       "12   85.526455   10.400574  0.000002  0.0001   NaN  \n",
       "25  103.794368   11.503633  0.000002  0.0001   NaN  \n",
       "12   99.668121   10.958552  0.000002  0.0001  33.0  \n",
       "12  103.740352   10.660052  0.000002  0.0001  33.0  "
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats1.loc[stats1.epoch == 13]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>dataset</th>\n",
       "      <th>epoch</th>\n",
       "      <th>fold</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>val_loss</th>\n",
       "      <th>val_w_loss</th>\n",
       "      <th>val_loss2</th>\n",
       "      <th>val_w_loss2</th>\n",
       "      <th>cor</th>\n",
       "      <th>any</th>\n",
       "      <th>epidural</th>\n",
       "      <th>intraparenchymal</th>\n",
       "      <th>intraventricular</th>\n",
       "      <th>subarachnoid</th>\n",
       "      <th>subdural</th>\n",
       "      <th>train_sz</th>\n",
       "      <th>val_sz</th>\n",
       "      <th>bs</th>\n",
       "      <th>train_time</th>\n",
       "      <th>valid_time</th>\n",
       "      <th>lr</th>\n",
       "      <th>wd</th>\n",
       "      <th>ver</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>14</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.032872</td>\n",
       "      <td>0.061043</td>\n",
       "      <td>0.062914</td>\n",
       "      <td>0.066554</td>\n",
       "      <td>0.066554</td>\n",
       "      <td>0.844028</td>\n",
       "      <td>0.112525</td>\n",
       "      <td>0.017403</td>\n",
       "      <td>0.044180</td>\n",
       "      <td>0.036614</td>\n",
       "      <td>0.069472</td>\n",
       "      <td>0.073159</td>\n",
       "      <td>17369</td>\n",
       "      <td>4384</td>\n",
       "      <td>32</td>\n",
       "      <td>101.308828</td>\n",
       "      <td>11.260699</td>\n",
       "      <td>0.000005</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>12</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.033388</td>\n",
       "      <td>0.060360</td>\n",
       "      <td>0.063039</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.845265</td>\n",
       "      <td>0.097268</td>\n",
       "      <td>0.014937</td>\n",
       "      <td>0.045735</td>\n",
       "      <td>0.025769</td>\n",
       "      <td>0.065610</td>\n",
       "      <td>0.075936</td>\n",
       "      <td>15619</td>\n",
       "      <td>3936</td>\n",
       "      <td>32</td>\n",
       "      <td>82.747959</td>\n",
       "      <td>10.047513</td>\n",
       "      <td>0.000005</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>14</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0.033915</td>\n",
       "      <td>0.060324</td>\n",
       "      <td>0.056965</td>\n",
       "      <td>0.051529</td>\n",
       "      <td>0.051529</td>\n",
       "      <td>0.846076</td>\n",
       "      <td>0.091700</td>\n",
       "      <td>0.009166</td>\n",
       "      <td>0.037559</td>\n",
       "      <td>0.020248</td>\n",
       "      <td>0.049256</td>\n",
       "      <td>0.061077</td>\n",
       "      <td>17468</td>\n",
       "      <td>4288</td>\n",
       "      <td>32</td>\n",
       "      <td>102.540290</td>\n",
       "      <td>10.781580</td>\n",
       "      <td>0.000005</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>12</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0.034051</td>\n",
       "      <td>0.060730</td>\n",
       "      <td>0.057532</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.844560</td>\n",
       "      <td>0.099342</td>\n",
       "      <td>0.015278</td>\n",
       "      <td>0.041240</td>\n",
       "      <td>0.025786</td>\n",
       "      <td>0.063912</td>\n",
       "      <td>0.080207</td>\n",
       "      <td>15699</td>\n",
       "      <td>3840</td>\n",
       "      <td>32</td>\n",
       "      <td>83.967543</td>\n",
       "      <td>9.888514</td>\n",
       "      <td>0.000005</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.032771</td>\n",
       "      <td>0.060638</td>\n",
       "      <td>0.063045</td>\n",
       "      <td>0.070920</td>\n",
       "      <td>0.070920</td>\n",
       "      <td>0.844702</td>\n",
       "      <td>0.120086</td>\n",
       "      <td>0.020185</td>\n",
       "      <td>0.044548</td>\n",
       "      <td>0.037809</td>\n",
       "      <td>0.075970</td>\n",
       "      <td>0.077759</td>\n",
       "      <td>17369</td>\n",
       "      <td>4384</td>\n",
       "      <td>32</td>\n",
       "      <td>95.730286</td>\n",
       "      <td>10.998797</td>\n",
       "      <td>0.000005</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>34.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0.035328</td>\n",
       "      <td>0.060772</td>\n",
       "      <td>0.057422</td>\n",
       "      <td>0.055588</td>\n",
       "      <td>0.055588</td>\n",
       "      <td>0.844641</td>\n",
       "      <td>0.098851</td>\n",
       "      <td>0.011631</td>\n",
       "      <td>0.040441</td>\n",
       "      <td>0.021717</td>\n",
       "      <td>0.052439</td>\n",
       "      <td>0.065184</td>\n",
       "      <td>17468</td>\n",
       "      <td>4288</td>\n",
       "      <td>32</td>\n",
       "      <td>98.306380</td>\n",
       "      <td>10.804755</td>\n",
       "      <td>0.000005</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>34.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   dataset  epoch  fold  train_loss  val_loss  val_w_loss  val_loss2  \\\n",
       "5       14      3     0    0.032872  0.061043    0.062914   0.066554   \n",
       "8       12      3     0    0.033388  0.060360    0.063039   0.000000   \n",
       "2       14      3     1    0.033915  0.060324    0.056965   0.051529   \n",
       "5       12      3     1    0.034051  0.060730    0.057532   0.000000   \n",
       "2       12      3     0    0.032771  0.060638    0.063045   0.070920   \n",
       "2       12      3     1    0.035328  0.060772    0.057422   0.055588   \n",
       "\n",
       "   val_w_loss2       cor       any  epidural  intraparenchymal  \\\n",
       "5     0.066554  0.844028  0.112525  0.017403          0.044180   \n",
       "8     0.000000  0.845265  0.097268  0.014937          0.045735   \n",
       "2     0.051529  0.846076  0.091700  0.009166          0.037559   \n",
       "5     0.000000  0.844560  0.099342  0.015278          0.041240   \n",
       "2     0.070920  0.844702  0.120086  0.020185          0.044548   \n",
       "2     0.055588  0.844641  0.098851  0.011631          0.040441   \n",
       "\n",
       "   intraventricular  subarachnoid  subdural  train_sz  val_sz  bs  train_time  \\\n",
       "5          0.036614      0.069472  0.073159     17369    4384  32  101.308828   \n",
       "8          0.025769      0.065610  0.075936     15619    3936  32   82.747959   \n",
       "2          0.020248      0.049256  0.061077     17468    4288  32  102.540290   \n",
       "5          0.025786      0.063912  0.080207     15699    3840  32   83.967543   \n",
       "2          0.037809      0.075970  0.077759     17369    4384  32   95.730286   \n",
       "2          0.021717      0.052439  0.065184     17468    4288  32   98.306380   \n",
       "\n",
       "   valid_time        lr      wd   ver  \n",
       "5   11.260699  0.000005  0.0001   NaN  \n",
       "8   10.047513  0.000005  0.0001   NaN  \n",
       "2   10.781580  0.000005  0.0001   NaN  \n",
       "5    9.888514  0.000005  0.0001   NaN  \n",
       "2   10.998797  0.000005  0.0001  34.0  \n",
       "2   10.804755  0.000005  0.0001  34.0  "
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats2.loc[stats2.epoch == 3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats = pd.concat([stats1.loc[stats1.epoch == 13], stats2.loc[stats2.epoch == 3]], sort=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats['name'] = np.where(stats['dataset'] == 14, 'new feats', \n",
    "                         np.where(stats['ver'].isnull(), 'old feats, train', 'old feats, test+train'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "stats['weighted_training'] = stats.epoch == 3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>val_loss</th>\n",
       "      <th>val_w_loss</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>fold</th>\n",
       "      <th>weighted_training</th>\n",
       "      <th>name</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td rowspan=\"6\" valign=\"top\">0</td>\n",
       "      <td rowspan=\"3\" valign=\"top\">False</td>\n",
       "      <td>new feats</td>\n",
       "      <td>0.059394</td>\n",
       "      <td>0.063065</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, test+train</td>\n",
       "      <td>0.059400</td>\n",
       "      <td>0.063696</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, train</td>\n",
       "      <td>0.059201</td>\n",
       "      <td>0.064282</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">True</td>\n",
       "      <td>new feats</td>\n",
       "      <td>0.061043</td>\n",
       "      <td>0.062914</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, test+train</td>\n",
       "      <td>0.060638</td>\n",
       "      <td>0.063045</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, train</td>\n",
       "      <td>0.060360</td>\n",
       "      <td>0.063039</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"6\" valign=\"top\">1</td>\n",
       "      <td rowspan=\"3\" valign=\"top\">False</td>\n",
       "      <td>new feats</td>\n",
       "      <td>0.059391</td>\n",
       "      <td>0.057033</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, test+train</td>\n",
       "      <td>0.059726</td>\n",
       "      <td>0.057000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, train</td>\n",
       "      <td>0.059864</td>\n",
       "      <td>0.058066</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">True</td>\n",
       "      <td>new feats</td>\n",
       "      <td>0.060324</td>\n",
       "      <td>0.056965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, test+train</td>\n",
       "      <td>0.060772</td>\n",
       "      <td>0.057422</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>old feats, train</td>\n",
       "      <td>0.060730</td>\n",
       "      <td>0.057532</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                              val_loss  val_w_loss\n",
       "fold weighted_training name                                       \n",
       "0    False             new feats              0.059394    0.063065\n",
       "                       old feats, test+train  0.059400    0.063696\n",
       "                       old feats, train       0.059201    0.064282\n",
       "     True              new feats              0.061043    0.062914\n",
       "                       old feats, test+train  0.060638    0.063045\n",
       "                       old feats, train       0.060360    0.063039\n",
       "1    False             new feats              0.059391    0.057033\n",
       "                       old feats, test+train  0.059726    0.057000\n",
       "                       old feats, train       0.059864    0.058066\n",
       "     True              new feats              0.060324    0.056965\n",
       "                       old feats, test+train  0.060772    0.057422\n",
       "                       old feats, train       0.060730    0.057532"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats.groupby(['fold','weighted_training','name'])[['val_loss','val_w_loss']].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>val_loss</th>\n",
       "      <th>val_w_loss</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>dataset</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>0.063542</td>\n",
       "      <td>0.069056</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>0.062726</td>\n",
       "      <td>0.068622</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>0.064020</td>\n",
       "      <td>0.069777</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>0.062367</td>\n",
       "      <td>0.067991</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.062012</td>\n",
       "      <td>0.067773</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>0.061149</td>\n",
       "      <td>0.066677</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>0.060799</td>\n",
       "      <td>0.066053</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>0.061087</td>\n",
       "      <td>0.066270</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         val_loss  val_w_loss\n",
       "dataset                      \n",
       "6        0.063542    0.069056\n",
       "7        0.062726    0.068622\n",
       "8        0.064020    0.069777\n",
       "9        0.062367    0.067991\n",
       "10       0.062012    0.067773\n",
       "11       0.061149    0.066677\n",
       "12       0.060799    0.066053\n",
       "13       0.061087    0.066270"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats = pd.concat([pd.read_csv(PATH_WORK/'stats.f{}.v{}'.format(f,31)) for f in range(5)],axis=0)\n",
    "stats.loc[stats.epoch==13].groupby('dataset')[['val_loss','val_w_loss']].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>val_loss</th>\n",
       "      <th>val_w_loss</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>dataset</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>0.064378</td>\n",
       "      <td>0.068053</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>0.063824</td>\n",
       "      <td>0.067963</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>0.065129</td>\n",
       "      <td>0.068768</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>0.062979</td>\n",
       "      <td>0.067057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.062737</td>\n",
       "      <td>0.067054</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>0.061973</td>\n",
       "      <td>0.065464</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>0.061613</td>\n",
       "      <td>0.064652</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>0.061888</td>\n",
       "      <td>0.064962</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         val_loss  val_w_loss\n",
       "dataset                      \n",
       "6        0.064378    0.068053\n",
       "7        0.063824    0.067963\n",
       "8        0.065129    0.068768\n",
       "9        0.062979    0.067057\n",
       "10       0.062737    0.067054\n",
       "11       0.061973    0.065464\n",
       "12       0.061613    0.064652\n",
       "13       0.061888    0.064962"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats = pd.concat([pd.read_csv(PATH_WORK/'stats.f{}.v{}'.format(f,32)) for f in range(5)],axis=0)\n",
    "stats.loc[stats.epoch==3].groupby('dataset')[['val_loss','val_w_loss']].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7efd58fd4b90>]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAD4CAYAAADlwTGnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3de5xdZX3v8c939t5zyWUmZBgIuUCYEMQAEcOAGaXlkgOCWlIUMZRSbKnIUaytbRGPtq8eL1VsS7CntJaKiqJyq7axRKJys9UQGSIJhBAIEcgkQCa3SUJmMrff+WOvxJ3JTGZnZpI9e/b3/XrNa+/1rGdlfguS9d3PevZaSxGBmZmVnrJCF2BmZoXhADAzK1EOADOzEuUAMDMrUQ4AM7MSlS50AYfi6KOPjunTpxe6DDOzovLkk09ujoi63u1FFQDTp0+nqamp0GWYmRUVSS/31e5TQGZmJcoBYGZWovIKAEkXS1ojaa2km/pYXyHpnmT9MknTc9bNlrRU0ipJT0uqTNqvTJZXSnpQ0tHDtVNmZjawAQNAUgq4DbgEmAVcKWlWr27XAtsi4iRgIXBzsm0auAu4PiJOBc4DOpP2rwDnR8RsYCVww7DskZmZ5SWfEcDZwNqIWBcRHcDdwPxefeYDdybv7wfmSRJwEbAyIlYARMSWiOgGlPyMTfpVAxuHvDdmZpa3fAJgCrA+Z7k5aeuzT0R0Aa1ALXAyEJKWSFou6cakTyfwv4GnyR74ZwF39PXLJV0nqUlSU0tLS947ZmZmB5dPAKiPtt63EO2vTxo4B7gqeb1M0jxJGbIB8FZgMtlTQJ/q65dHxO0R0RARDXV1B3yN1czMBimfAGgGpuUsT+XA0zX7+iTn92uArUn7YxGxOSJ2A4uBOcAZABHxYmTvR30v8PYh7MdBfXvpS/xwhc8wmZnlyicAngBmSjpRUjmwAFjUq88i4Jrk/eXAw8mBfQkwW9KYJBjOBZ4FNgCzJO39SH8hsHpou9K/+55s5ttL+7wOwsysZA14JXBEdEm6gezBPAV8PSJWSfos0BQRi8iev/+2pLVkP/kvSLbdJukWsiESwOKIeABA0v8FfiapE3gZ+OCw712isb6Wb/z8Jdo6uqkqTx2uX2NmVlRUTE8Ea2hoiMHcCuKRNZv4w288wXf++G284yRfbmBmpUXSkxHR0Lu9JK4EPmv6RFJlYumLWwpdipnZiFESATCuIs3pU2pYus4BYGa2V0kEAEDjjFpWrN/OG3u6Cl2KmdmIUDoBUF9LV0/Q9PK2QpdiZjYilEwANEw/inSZeNyngczMgBIKgDHlad4ybYIngs3MEiUTAJA9DfT0hlZ2eR7AzKzEAmBGLd09wRO/3lroUszMCq6kAuDME46iPFXmr4OamVFiAVCZSXHG8RM8EWxmRokFAGTnAZ7Z0MqO9s5Cl2JmVlAlFwBz62vpCfjlOs8DmFlpK7kAeOvxEyhPex7AzKzkAqAyk+LM44/y9QBmVvJKLgAg+3XQ1a/tYPvujkKXYmZWMCUbABGwzNcDmFkJK8kAmD21hspMmU8DmVlJK8kAqEinaDhhoq8HMLOSllcASLpY0hpJayXd1Mf6Ckn3JOuXSZqes262pKWSVkl6WlKlpPGSnsr52Szp1uHbrYE1zqjludd2smXXniP5a83MRowBA0BSCrgNuASYBVwpaVavbtcC2yLiJGAhcHOybRq4C7g+Ik4FzgM6I2JnRJyx94fsQ+G/P0z7lJe59bWA5wHMrHTlMwI4G1gbEesiogO4G5jfq8984M7k/f3APEkCLgJWRsQKgIjYEhHduRtKmgkcA/z34Hfj0M2eWsOY8pTnAcysZOUTAFOA9TnLzUlbn30iogtoBWqBk4GQtETSckk39vHnXwncExHR1y+XdJ2kJklNLS0teZSbn0yqjIbpngcws9KVTwCoj7beB+v++qSBc4CrktfLJM3r1W8B8L3+fnlE3B4RDRHRUFdXl0e5+Wusr+WFTbto2el5ADMrPfkEQDMwLWd5KrCxvz7Jef8aYGvS/lhEbI6I3cBiYM7ejSS9BUhHxJOD3oMhaJyRnQfwKMDMSlE+AfAEMFPSiZLKyX5iX9SrzyLgmuT95cDDySmdJcBsSWOSYDgXeDZnuys5yKf/w+20ydWMq0j7vkBmVpLSA3WIiC5JN5A9mKeAr0fEKkmfBZoiYhFwB/BtSWvJfvJfkGy7TdItZEMkgMUR8UDOH38F8K5h3aNDkE6VcfaJE3ncE8FmVoIGDACAiFhM9vRNbttf57xvB97fz7Z3kf0qaF/r6vOu9DBprK/l4ec28fqOdo6trix0OWZmR0xJXgmca+/1AJ4HMLNSU/IBMGtyNdWVaV8PYGYlp+QDIFUmzj6x1hPBZlZySj4AIPt10Je37Gbj9rZCl2JmdsQ4AMhOBAM+DWRmJcUBAJwyaTwTxmQ8EWxmJcUBAJSVibedONHzAGZWUhwAicb6Wpq3tbF+6+5Cl2JmdkQ4ABKNM44G8CjAzEqGAyBx8rHjmDi23LeFMLOS4QBISGJufXYeoJ9HE5iZjSoOgByN9bW82trOK54HMLMS4ADIsff5AL4ewMxKgQMgx4y6cdSNr/BEsJmVBAdAjuw8QC1LX/Q8gJmNfg6AXhrra9m0cw/rNr9R6FLMzA4rB0Avc+snAn4+gJmNfnkFgKSLJa2RtFbSTX2sr5B0T7J+maTpOetmS1oqaZWkpyVVJu3lkm6X9Lyk5yS9b7h2aihOPHosx1ZXeCLYzEa9AR8JKSkF3AZcCDQDT0haFBG5D3e/FtgWESdJWgDcDHwgeRD8XcDVEbFCUi3QmWzzaWBTRJwsqQyYOHy7NXiSaKyv5X/WZucBJBW6JDOzwyKfEcDZwNqIWBcRHcDdwPxefeYDdybv7wfmKXvkvAhYGRErACJiS0R0J/3+CPhi0t4TEZuHtivDp3FGLZt37WHtpl2FLsXM7LDJJwCmAOtzlpuTtj77REQX0ArUAicDIWmJpOWSbgSQNCHZ7nNJ+32Sjh3CfgyrxnrfF8jMRr98AqCvcyC9vyPZX580cA5wVfJ6maR5SftU4OcRMQdYCvx9n79cuk5Sk6SmlpaWPModumkTq5hcU+l5ADMb1fIJgGZgWs7yVGBjf32S8/41wNak/bGI2BwRu4HFwBxgC7Ab+EGy/X1J+wEi4vaIaIiIhrq6urx2aqgkMXdGLct+vZWeHl8PYGajUz4B8AQwU9KJksqBBcCiXn0WAdck7y8HHo7slVRLgNmSxiTBcC7wbLLuh8B5yTbzgGcZQRrra9n6RgfPb9pZ6FLMzA6LAb8FFBFdkm4gezBPAV+PiFWSPgs0RcQi4A7g25LWkv3kvyDZdpukW8iGSACLI+KB5I/+ZLLNrUAL8IfDvG9DkntfoFMmVRe4GjOz4adiuuVBQ0NDNDU1HbHf91tffpg3T6rm9j9oOGK/08xsuEl6MiIOOJD5SuCDmHui5wHMbPRyABxE44xaWts6Wf3ajkKXYmY27BwAB+HnA5jZaOYAOIjjaqqYXjvGN4Yzs1HJATCAxuR6gG7PA5jZKOMAGMDc+lp2tnexamNroUsxMxtWDoABNNZ7HsDMRicHwACOqa6kvm6s5wHMbNRxAOShsb6WJ17aRld3T6FLMTMbNg6APDTOqGXXni6e3uB5ADMbPRwAeZi7dx7Ap4HMbBRxAOTh6HEVzDxmnCeCzWxUcQDkqXFGLU0vbaOjy/MAZjY6OADy1FhfS1tnN09v2F7oUszMhoUDIE9v8/UAZjbKOADyNHFsOadMGu+JYDMbNRwAh2BufXYeYE9Xd6FLMTMbMgfAIWicUcuerh6eesXzAGZW/PIKAEkXS1ojaa2km/pYXyHpnmT9MknTc9bNlrRU0ipJT0uqTNofTf7Mp5KfY4Zrpw6XuSfWIsHj67YWuhQzsyEbMAAkpYDbgEuAWcCVkmb16nYtsC0iTgIWAjcn26aBu4DrI+JU4DygM2e7qyLijORn01B35nCrGZNh1nHVLF23udClmJkNWT4jgLOBtRGxLiI6gLuB+b36zAfuTN7fD8yTJOAiYGVErACIiC0RUdQn0Bvra1n+ynbaO4t6N8zM8gqAKcD6nOXmpK3PPhHRBbQCtcDJQEhaImm5pBt7bfeN5PTPXyWBcQBJ10lqktTU0tKSR7mH19z6Wjq6elj+yrZCl2JmNiT5BEBfB+bej8fqr08aOAe4Knm9TNK8ZP1VEXE68FvJz9V9/fKIuD0iGiKioa6uLo9yD6+z6ydSJnjc1wOYWZHLJwCagWk5y1OBjf31Sc771wBbk/bHImJzROwGFgNzACJiQ/K6E/gu2VNNI151ZYbTptT4egAzK3r5BMATwExJJ0oqBxYAi3r1WQRck7y/HHg4IgJYAsyWNCYJhnOBZyWlJR0NICkDvAd4Zui7c2Q01tfy1PrttHV4HsDMiteAAZCc07+B7MF8NXBvRKyS9FlJlybd7gBqJa0FPgHclGy7DbiFbIg8BSyPiAeACmCJpJVJ+wbg34Z1zw6juTNq6ewOnnzZ8wBmVrzS+XSKiMVkT9/ktv11zvt24P39bHsX2a+C5ra9AZx5qMWOFGdNn0iqTCxdt5lzZh5d6HLMzAbFVwIPwriKNKdPqfGN4cysqDkABqlxRi0rm1t5Y09XoUsxMxsUB8AgNdbX0tUT/PcLvirYzIqTA2CQzpo+kalHVfGX961gmb8SamZFyAEwSFXlKe67vpFjqiv4g6//kkeeG/G3MjIz248DYAiOq6ni3g83MvPYcXzoW03851MbCl2SmVneHABDVDuugu9+aC5zTjiKP73nKe56/OVCl2RmlhcHwDCorszwrT86m/PfdAyf+Y9n+OdH1xa6JDOzATkAhkllJsW/Xn0m88+YzJcfXMMXf7Sa7N0wzMxGpryuBLb8ZFJlLLziDMZXpvnXx9axo62Lz//uaaTK+rzTtZlZQTkAhllZmfjc/NOorszwz4++yI72ThZecQblaQ+2zGxkcQAcBpK48eJTqKnK8MUfPceu9i6++vtnUlWeKnRpZmb7+GPpYfThc2fwpfeezs9eaOHqO5bR2tY58EZmZkeIA+AwW3D28fzTlXNY0bydK29/nM279hS6JDMzwAFwRLx79nH82x80sG7zLq746lI2bG8rdElmZg6AI+W8Nx3DXde+jZZde3j/v/yCF1t2FbokMytxDoAjqGH6RO6+bi4d3T28/6tLeWZDa6FLMrMS5gA4wk6dXMO9H26kKpPiytsf55e/3lroksysROUVAJIulrRG0lpJN/WxvkLSPcn6ZZKm56ybLWmppFWSnpZU2WvbRZKK5oHww6G+bhz3Xd9IXXUFV9+xzHcSNbOCGDAAJKWA24BLgFnAlZJm9ep2LbAtIk4CFgI3J9umyT4P+PqIOBU4D9j3XUhJ7wVK8mT45AlV3JdzJ9FFKzYWuiQzKzH5jADOBtZGxLqI6ADuBub36jMfuDN5fz8wT5KAi4CVEbECICK2REQ3gKRxwCeAzw99N4pT7p1EP373r/jOMt9J1MyOnHwCYAqwPme5OWnrs09EdAGtQC1wMhCSlkhaLunGnG0+B/wDsPtgv1zSdZKaJDW1tLTkUW5xyb2T6Kd/4DuJmtmRk8+tIPq6k1nv21z21ycNnAOcRfZA/5CkJ4EtwEkR8We58wV9iYjbgdsBGhoaRuXtNffeSfTP713Blx9cQ8vOPbz79OOYPKGKY8ZXkE55rt7Mhl8+AdAMTMtZngr0PmG9t09zct6/BtiatD8WEZsBJC0G5pA973+mpJeSGo6R9GhEnDf4XSlumVQZCz9wBtVVab7x85f4xs9fAiBVJiZVVzJ5QiWTJ1Tt+5mSs1xdmSls8WZWlDTQPeuTA/rzwDxgA/AE8HsRsSqnz0eB0yPiekkLgPdGxBWSjgIeIjsK6AAeBBZGxAM5204H/isiThuo2IaGhmhqajq0PSxCL7bsYv3W3Wzc3s7G7W1s3N7Ghu1tbGxt49Xt7XT17P//bHxFmuNyAmHKhKpsYNRklyfVVJLxKMKsZEl6MiIaercPOAKIiC5JNwBLgBTw9YhYJemzQFNELALuAL4taS3ZT/4Lkm23SbqFbGgEsDj34G99m1E3jhl14/pc190TbN61JxsI+37a2bC9jVdb21jZ3MrWNzr220aCY8dX8s5Tj+VvLj2V7Py8mZW6AUcAI0mpjACGqq2jm42tbTmjh3ZWNm/n0TUtfPdDb+PtM44udIlmdgQNegRgxaeqPHXAKKK9s5tz/+4Rbv3JCzTW13oUYGa+FUSpqMyk+Mh5J/HLl7ay9MUthS7HzEYAB0AJ+cBZ05hUXcmtP33BD6w3MwdAKanMpPjI+TP45Utb+YVHAWYlzwFQYq5o2DsKeN6jALMS5wAoMXtHAU+8tM2jALMS5wAoQXvnAhb+xKMAs1LmAChBFekUHz1/Bk0vb+Pnaz0KMCtVDoASdcVZ0ziuppKFngswK1kOgBJVkU7xkfNP4smXt/E/azcXuhwzKwAHQAm7omEqx9X4ugCzUuUAKGG5o4D/fsGjALNS4wAocVc0TGVyja8LMCtFDoASt3cUsPyV7R4FmJUYB4Dx/mQU4G8EmZUWB4DtGwX86pXt/MyjALOS4QAwIHuPIM8FmJUWB4ABUJ4u46MXZEcBjz3fUuhyzOwIyCsAJF0saY2ktZJu6mN9haR7kvXLkge97103W9JSSaskPS2pMml/UNKKpP2rklLDtVM2OO8/cxpTJlT5ugCzEjFgACQH5tuAS4BZwJWSZvXqdi2wLSJOAhYCNyfbpoG7gOsj4lTgPKAz2eaKiHgLcBpQB7x/yHtjQ1KeLuOj55/EU+s9CjArBfmMAM4G1kbEuojoAO4G5vfqMx+4M3l/PzBP2YfOXgSsjIgVABGxJSK6k/c7kv5poBzwR84R4PIzpzJlQhULPQowG/XyCYApwPqc5eakrc8+EdEFtAK1wMlASFoiabmkG3M3krQE2ATsJBscB5B0naQmSU0tLf5UerjtHQWsWL+dRz0KMBvV8gkA9dHW+6Nhf33SwDnAVcnrZZLm7esQ8U7gOKACuKCvXx4Rt0dEQ0Q01NXV5VGuDdXeUYDnAsxGt3wCoBmYlrM8FdjYX5/kvH8NsDVpfywiNkfEbmAxMCd3w4hoBxZx4GklK5DydBk3XJCMAtZ4FGA2WuUTAE8AMyWdKKkcWED2gJ1rEXBN8v5y4OHIfnRcAsyWNCYJhnOBZyWNk3Qc7AuMdwHPDX13bLi8b87eUYCvCzAbrQYMgOSc/g1kD+argXsjYpWkz0q6NOl2B1AraS3wCeCmZNttwC1kQ+QpYHlEPACMBRZJWgmsIDsP8NVh3TMbkvJ0GR+74CRWNLd6FGA2SqmYPt01NDREU1NTocsoGR1dPVzwD48ycWw5//nRd5D9YpeZFRtJT0ZEQ+92Xwls/SpPl3HD+SexsrmVR9ZsKnQ5ZjbMHAB2UO87cypTj/I3gsxGIweAHVQmlZ0LWNncysPPeRRgNpo4AGxA750zlWkTPQowG20cADagTKqMj50/k6c3eBRgNpo4ACwvl82Z4lGA2SjjALC85I4CHlrtUYDZaOAAsLxdNmcKx08cw60P+epgs9HAAWB5y6Sy9wh6ZsMOfupRgFnRcwDYIbnsrckowPcIMit6DgA7JHuvC1i10aMAs2LnALBDdtlbp3BCrUcBZsXOAWCHLJ3K3iNo1cYd/OTZ1wtdjpkNkgPABuU3owBfF2BWrBwANijpVBkfu2Amz766g4U/fYHHnm9hzWs7ad3d6UAwKxLpQhdgxet3z5jMnb94iX986IX92iszZUyqruSY6komVVcyqaaSY5P3x1ZXcGx1drk87c8fZoXkALBBS6fK+P5H3s6r29t5fWc7r7W28/qO5HXnHl5vbeep9dt5bVU7HV09B2xfO7Y8CYmKXiGR/Zk4tpwJYzJUZlIF2Duz0c8BYEOSSZVxfO0Yjq8d02+fiKC1rZPXdvwmJF7fsYfXdrTzems7r+1o5+kNO9jyxh76OntUmSnjqDHlTBhTzoSqDEeNzVBTVc5RYzJMGJPJac++ThiTDY5MyiMMs4PJKwAkXQx8BUgBX4uIL/VaXwF8CzgT2AJ8ICJeStbNBv4VqAZ6gLPIzj3cB8wAuoEfRsRNw7A/NgJJSg7K5Zwyqbrffp3dPWzauYfXWtvZtKOdbbs72ba7g+27O9i+u5Ntuztpbevg+dd3sX13J9t3d9DV0/98w7iKdBIQGY4aU05NVSYJksx+77PL2UCpqcqQdnBYiRgwACSlgNuAC4Fm4AlJiyLi2Zxu1wLbIuIkSQuAm4EPSEoDdwFXR8QKSbVAJ1AB/H1EPCKpHHhI0iUR8aPh3T0rJplUGVMmVDFlQlVe/SOCXXu6kjDoZHtbRzYkdnfsC4/WvSHS1knztja27e5gR1snB8kNxlekqekVHBPGZJhQVb7fiGNCzgikujLjOQ0rOvmMAM4G1kbEOgBJdwPzgdwAmA/8TfL+fuCflH2C+EXAyohYARARW5I+u4FHkrYOScuBqUPbFSs1khhfmWF8ZYZpE/Pfrqcn2Nnexfa2jiQ4OveNMvYGSWvSvm13Bxu2te3rc7DgqEiXMb4yzbiKNOP2vlZkGF+Z3q99/L71GcZVpA9YX5EeWXMeEUF3T9DZHXR099DR1UNn929+OrqCzu4eeiIYX5mhujJNdVWGinQZ2cPAyNDdE+xq72JHeye79nRRXzd2xP23PtLyCYApwPqc5Wbgbf31iYguSa1ALXAyEJKWAHXA3RHx5dwNJU0AfofsKaYDSLoOuA7g+OOPz6Ncs4MrKxM1YzLUjMlwQm3+2/X0BDv3dCXhsH94tO7uZFdHF7vau9i1p4ud7dn3G7a3sWtPJ7vas20HO2W1V3mqbF+AZFKiTNkfKRt6AsrKyLaRtImkH4jfLOe+at966OoJOrp66Nh7IE8O4h37Duo9+w74nd09fc7N5LMf1VXp/UKhujIbiNn32dfxlWmqKzMHrB9bntoXIBFBe2cPO9o72dneSWtbFzvbO9nRnrwmyzuTA/zO9i52tO2/vGtP1371vXfOFG654oxD37FRJJ8A6CvCe/916K9PGjiH7Hn/3WRP9TwZEQ8BJKeIvgf8494RxgF/SMTtwO0ADQ0N/oK5FUxZmaipys4THE//k979iQj2dPXsOxjtau9iZxIO+0Jj32v2oNXVHQRBTw/0RBDJnxORXe4J+mjLvu/uiX3b7G2LZJtMSmRSZYyrSFOeKiOTKiOTLiOT0r7l8nTymvTNpH/Tvq9tX18hxM492QPvjpyD8o7237S92tq+731754HfDNvvv7eguiqDIK/wTJWJ6sokcKrSjK/IMP3oMckoMb1fuCxbt5V/X97MB98+ndlTJxzy/8vRIp8AaAam5SxPBTb206c5OajXAFuT9sciYjOApMXAHOChZLvbgRci4tZB74FZkZBEZSZFZSZF3fiKQpdTcB1dPQcExM72/QNkR3snPRHJwTuzb0Sxb9SQM4qoyqTyPuV0yWmTeHTNJj7/X6u558NzR9SpqiMpnwB4Apgp6URgA7AA+L1efRYB1wBLgcuBhyNi76mfGyWNATqAc4GFAJI+TzYo/ng4dsTMikt5uozacRXUjjvyYTi+MsOfXXgyn/mPZ1iy6nUuPm3SEa9hJBjwawsR0QXcACwBVgP3RsQqSZ+VdGnS7Q6gVtJa4BPATcm224BbyIbIU8DyiHhA0lTg08AsYLmkpyQ5CMzsiFlw1jRmHjOOL/5odZ8XKpYCFdN9WxoaGqKpqanQZZjZKPHomk188BtP8Jl3v5k//q36Qpdz2CRzrw292/3FZTMrWee96Rh+a+bR/L+H17J9d0ehyzniHABmVtI+/e43s7O9k6/0uqlhKXAAmFlJO2VSNR8463i+vfRl1rXsKnQ5R5QDwMxK3icuPJmKdBlf+tFzhS7liHIAmFnJqxtfwUfOP4kfP/s6S1/cMvAGo4QDwMwMuPacE5lcU8kXFj9LTx637BgNHABmZkBlJsUnLzmFZzbs4Ae/2lDoco4IB4CZWeJ3Zk/mLVNr+Lsla9jd0TXwBkXOAWBmligrE595zyxe29HOv/3s14Uu57BzAJiZ5Thr+kTedfokvvrYi7y+o73Q5RxWDgAzs14+efEpdPX08A8/XlPoUg4rB4CZWS8n1I7lg2+fzn1PNrNqY2uhyzlsHABmZn244YKZTKjK8IUHVlNMN808FA4AM7M+1FRl+Pi8mfzixS08/NymQpdzWDgAzMz6cdXcE6g/eixfWLyazu7R98wAB4CZWT8yqTL+z7vezLqWN/juslcKXc6wcwCYmR3EvDcfQ2N9Lbf+9Hla2zoLXc6wyisAJF0saY2ktZJu6mN9haR7kvXLJE3PWTdb0lJJqyQ9Lakyaf+CpPWSSuv+q2ZWVCTx6Xe/me1tndz2yNpClzOsBgwASSngNuASss/wvVLSrF7drgW2RcRJZB/6fnOybRq4C7g+Ik4FzgP2RugPgbOHYR/MzA6r06bUcPmcqXzz5y/xypbdhS5n2OQzAjgbWBsR6yKiA7gbmN+rz3zgzuT9/cA8SQIuAlZGxAqAiNgSEd3J+8cj4tXh2Akzs8PtL975JlJl4uYHR88zA/IJgCnA+pzl5qStzz4R0QW0ArXAyUBIWiJpuaQbh16ymdmRd2x1JR8+t54Hnn6Vppe2FrqcYZFPAKiPtt5XRfTXJw2cA1yVvF4mad6hFCjpOklNkppaWloOZVMzs2F13W/Xc2x1BZ97YPWoeGZAPgHQDEzLWZ4KbOyvT3LevwbYmrQ/FhGbI2I3sBiYcygFRsTtEdEQEQ11dXWHsqmZ2bAaU57mLy56EyvWb+eHK3sfBotPPgHwBDBT0omSyoEFwKJefRYB1yTvLwcejuy100uA2ZLGJMFwLvDs8JRuZnbkvW/OVE6dXM2XH1xDe2d3ocsZkgEDIDmnfwPZg/lq4N6IWCXps5IuTbrdAdRKWgt8Argp2XYbcAvZEHkKWB4RDwBI+rKkZmCMpGZJfzO8u2ZmNvzKyrJfC92wvY07/qe4nxmgYrrJUUNDQzQ1NRW6DDMzPvStJk+dSY4AAAVCSURBVH6xdjOP/uX51I2vKHQ5ByXpyYho6N3uK4HNzAbhU5ecwp6uHhb+9PlClzJoDgAzs0GorxvH7889gbt/+QprXttZ6HIGxQFgZjZIH583k3EVab6weHWhSxkUB4CZ2SAdNbacP5k3k58938Kja4rvmQEOADOzIbi68QROqB3D3y5eTVeRPTPAAWBmNgQV6RSfuuQUnn99F/c0rR94gxEkXegCzMyK3TtPncTZ0yey8CfP09bRTUW6jPJ0GRXpFOXpMspTZVRk9r6mei2XUZFK7VsuK+vrzjqHhwPAzGyIJPFX75nF733tcT7/wNAmhDMp9RkUP/zYOVRmUsNUcZYDwMxsGJw+tYblf3UhbZ3d7OnsoaO7hz2d3XR099DR1cOerr2v3fuW9/TT3tdy+jCMDBwAZmbDJJMqI5Mqg8pCV5IfTwKbmZUoB4CZWYlyAJiZlSgHgJlZiXIAmJmVKAeAmVmJcgCYmZUoB4CZWYkqqkdCSmoBXi50Hb0cDWwudBF5KqZaobjqLaZaobjqLaZaYWTWe0JE1PVuLKoAGIkkNfX1rM2RqJhqheKqt5hqheKqt5hqheKq16eAzMxKlAPAzKxEOQCG7vZCF3AIiqlWKK56i6lWKK56i6lWKKJ6PQdgZlaiPAIwMytRDgAzsxLlABgESdMkPSJptaRVkj5e6JoGIikl6VeS/qvQtQxE0gRJ90t6Lvlv3Fjomg5G0p8lfw+ekfQ9SSPmcSCSvi5pk6RnctomSvqJpBeS16MKWWOufur9u+TvwkpJP5A0oZA17tVXrTnr/kJSSDq6ELXlywEwOF3An0fEm4G5wEclzSpwTQP5ODC0h5UeOV8BHoyIU4C3MILrljQF+BOgISJOA1LAgsJWtZ9vAhf3arsJeCgiZgIPJcsjxTc5sN6fAKdFxGzgeeBTR7qofnyTA2tF0jTgQuCVI13QoXIADEJEvBoRy5P3O8keoKYUtqr+SZoKvBv4WqFrGYikauC3gTsAIqIjIrYXtqoBpYEqSWlgDLCxwPXsExE/A7b2ap4P3Jm8vxP43SNa1EH0VW9E/DgiupLFx4GpR7ywPvTz3xZgIXAjMOK/YeMAGCJJ04G3AssKW8lB3Ur2L2RPoQvJQz3QAnwjOWX1NUljC11UfyJiA/D3ZD/tvQq0RsSPC1vVgI6NiFch+2EGOKbA9RyKPwJ+VOgi+iPpUmBDRKwodC35cAAMgaRxwL8DfxoROwpdT18kvQfYFBFPFrqWPKWBOcC/RMRbgTcYWaco9pOcP58PnAhMBsZK+v3CVjU6Sfo02dOv3yl0LX2RNAb4NPDXha4lXw6AQZKUIXvw/05EfL/Q9RzEO4BLJb0E3A1cIOmuwpZ0UM1Ac0TsHVHdTzYQRqr/Bfw6IloiohP4PvD2Atc0kNclHQeQvG4qcD0DknQN8B7gqhi5Fy/NIPtBYEXy720qsFzSpIJWdRAOgEGQJLLnqFdHxC2FrudgIuJTETE1IqaTnZx8OCJG7CfUiHgNWC/pTUnTPODZApY0kFeAuZLGJH8v5jGCJ60Ti4BrkvfXAP9ZwFoGJOli4JPApRGxu9D19Ccino6IYyJievLvrRmYk/ydHpEcAIPzDuBqsp+mn0p+3lXookaRjwHfkbQSOAP42wLX069kpHI/sBx4muy/qRFzKwBJ3wOWAm+S1CzpWuBLwIWSXiD7bZUvFbLGXP3U+0/AeOAnyb+1rxa0yEQ/tRYV3wrCzKxEeQRgZlaiHABmZiXKAWBmVqIcAGZmJcoBYGZWohwAZmYlygFgZlai/j/ydXzjs9/peQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(stats.groupby('epoch').mean().val_loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4368, 60, 6)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predictions.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.26533565, 0.14922237, 0.21536556, 0.21641548, 0.21140262,\n",
       "       0.19743267], dtype=float32)"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predictions.mean((0,1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f7449493790>]"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(predictions.mean(0)[:,0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f744941c650>]"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "dd = train_md.loc[train_md.fold5==4].copy()\n",
    "dd['res'] = val_results[:,0]\n",
    "\n",
    "plt.plot(dd[['res','pos_idx']].groupby('pos_idx').mean().values)"
   ]
  },
  {
   "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.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}