Skip to content

Instantly share code, notes, and snippets.

@Radi4
Last active April 17, 2018 05:21
Show Gist options
  • Save Radi4/988f3ef2ba36d8f3625caf52f2f3673b to your computer and use it in GitHub Desktop.
Save Radi4/988f3ef2ba36d8f3625caf52f2f3673b to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Importing"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n"
]
}
],
"source": [
"import numpy as np\n",
"import mne\n",
"import os\n",
"from sklearn.model_selection import train_test_split\n",
"import h5py\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sb\n",
"from sklearn.decomposition import PCA\n",
"from sklearn.preprocessing import StandardScaler\n",
"import torch\n",
"from keras.models import load_model"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from ipyparallel import Client\n",
"c = Client()\n",
"# lview = c.load_balanced_view()\n",
"lview = c[:]\n",
"lview.block = True"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%%px\n",
"import numpy as np\n",
"from sklearn.metrics import mean_squared_error"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Metric"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Физический смысл - метрика соответствует соотношению энергий: \n",
" а) объясненной y_pred \n",
" б) общей энергии y_true (энергия пропорциональна L2-норме вектора)\n",
"С точки зрения оптимизиации, минимизация mse ведет к минимизации l2, поэтому сети можно учить на mse"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def metric(y_true, y_pred):\n",
" l2ratio = np.sum((y_true - y_pred)**2) / np.sum(y_true**2)\n",
" return np.sqrt(l2ratio) * 100"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"@lview.parallel()\n",
"def load_file(fnames):\n",
" import h5py\n",
" try:\n",
" h5_file = h5py.File(fnames, 'r')\n",
" a_group_key = list(h5_file.keys())[0]\n",
" eeg_data = np.array(h5_file[a_group_key]).T\n",
" except FileNotFoundError:\n",
" return None\n",
" return [eeg_data, eeg_data.shape[0], fnames.split('/')[-1]]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def find_bad_channels(X, X_size):\n",
" X_delete_channels = []\n",
" start = 0\n",
" for finish in X_size:\n",
" part_data = X[start : finish]\n",
" X_delete_channels.append([])\n",
" for i in range(X.shape[1]):\n",
" if (np.array_equal(part_data[:, i], np.zeros(finish - start))):\n",
" X_delete_channels[-1].append(i)\n",
" start = finish\n",
" return X_delete_channels "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load train data"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"train_dir = \"/mnt/radi4/data/train/\"\n",
"train_names = [x for x in os.listdir(train_dir) \n",
" if x[-3:] == \".h5\"]\n",
"data = [x for x in load_file.map([train_dir + f for f in train_names]) if x is not None]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"X_train = np.concatenate([x[0] for x in data], axis = 0)\n",
"X_train_size = np.cumsum(np.array([x[1] for x in data]))\n",
"X_train_names = np.array([x[2] for x in data])\n",
"X_train_delete_channels = find_bad_channels(X_train, X_train_size)\n",
"del data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load test data"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def load_new_data():\n",
" eeg_dir = \"/mnt/radi4/data/test/\"\n",
" eeg_names = [x for x in os.listdir(eeg_dir) \n",
" if x[-3:] == \".h5\"]\n",
" data = [x for x in load_file.map([eeg_dir + f for f in eeg_names]) if x is not None]\n",
" return np.concatenate([x[0] for x in data], axis = 0), np.cumsum(np.array([x[1] for x in data])), np.array([x[2] for x in data])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"X_test, X_test_size, X_test_names = load_new_data()\n",
"X_test_delete_channels = find_bad_channels(X_test, X_test_size)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# PCA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Метод главныx компонент - бейзлайн, который в идеале надо побить с помощью NN"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"class L2RatioTester(object):\n",
" def metric(self, y_true, y_pred):\n",
" l2ratio = np.sum((y_true - y_pred)**2) / np.sum(y_true**2)\n",
" return np.sqrt(l2ratio) * 100"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"components_count = [1, 2, 4, 8, 12, 29, 40, 45, 50, 55, 58]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"@lview.parallel()\n",
"def calc_metric(n_components):\n",
" from sklearn.decomposition import PCA\n",
" pca = PCA(n_components=n_components)\n",
" pca.fit(X_train)\n",
" return (tester.metric(X_test, pca.inverse_transform(pca.transform(X_test)))\n",
" , tester.metric(X_train, pca.inverse_transform(pca.transform(X_train))))"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"lview['X_train'] = X_train[:200000]\n",
"lview['X_test'] = X_test[:200000]\n",
"lview['L2RatioTester'] = L2RatioTester"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## L2Ratio On PCA"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 44 ms, sys: 12 ms, total: 56 ms\n",
"Wall time: 11.5 s\n"
]
}
],
"source": [
"%%time \n",
"lview['tester'] = L2RatioTester()\n",
"l2_ratio = calc_metric.map(components_count)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "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\niKwaZ04jIiKyIgxuIiIiK8LgJiIisiIMbiIiIivC4CYiIrIiDG4iIiIrwuAmIiKyIgxuIiIiKyLQ\narVacxdBRERE+uERNxERkRVhcBMREVkRBjcREZEVYXATERFZEQY3ERGRFWFwExERWRGrD+6DBw9i\n0aJFWLhwIZKSkq55XKvV4tVXX8XChQuxdOlSZGdnm6FKyzdUH7du3YqlS5di6dKluOuuu5CTk2OG\nKq3DUL3slZWVhSlTpuDnn382YXXWRZ9epqen47bbbkNcXBzuu+8+E1doHYbqY0NDAx5++GHceuut\niIuLw/fff2+GKi3fc889h+joaCxZsqTfx02WN1or1tHRoV2wYIG2sLBQ29raql26dKn2woULfZ6z\nf/9+7YMPPqjt6urSnjhxQrt8+XIzVWu59OljZmamtra2VqvVdveUfeyfPr3sfd6KFSu0q1at0v70\n009mqNTy6dPLuro67eLFi7UlJSVarVarraqqMkepFk2fPr7//vva119/XavVarUajUYbERGhbW1t\nNUe5Fu3o0aPa06dPa+Pi4vp93FR5Y9VH3FlZWfD19cW4ceNgZ2eHuLg47Nmzp89z9uzZg/j4eAgE\nAsyYMQP19fVQq9Vmqtgy6dPHmTNnQiqVAgBmzJiB8vJyc5Rq8fTpJQB88cUXWLRoETw8PMxQpXXQ\np5fbtm3DwoULoVKpAID97Ic+fRQIBGhqaoJWq0VTUxOkUilEIpGZKrZcERERut+D/TFV3lh1cFdU\nVECpVOq+VygUqKioGPQ5SqXymueMdfr08WqbNm3CvHnzTFGa1dH3Z3L37t24++67TV2eVdGnl/n5\n+aivr8eKFStw++23Izk52dRlWjx9+njvvfciNzcXN9xwA2699VasW7cOQqFVx4NZmCpv+CcVDcuR\nI0ewadMmfPXVV+YuxWqtX78eTz31FH8xGkBnZyeys7Px2WefoaWlBXfddRdCQ0MxYcIEc5dmVX75\n5RcEBwfj888/R2FhIRISEhAeHg5nZ2dzl0b9sOrgVigUfU7ZVlRUQKFQDPqc8vLya54z1unTRwDI\nycnBn//8Z3z44Ydwc3MzZYlWQ59enj59Gk888QQAoKamBgcOHIBIJMLNN99s0lotnT69VCqVcHV1\nhVgshlgsRnh4OHJychjcV9Gnj5s3b0ZiYiIEAgF8fX3h4+ODvLw8TJ8+3dTlWjVT5Y1V/8k/bdo0\n5Ofno6ioCG1tbUhJSUFMTEyf58TExCA5ORlarRYnT56ERCKBXC43U8WWSZ8+lpaW4rHHHsPrr7/O\nX54SajkAAAOhSURBVIqD0KeXe/fu1X0tWrQIL730EkO7H/r0csGCBcjMzERHRwcuX76MrKwsBAQE\nmKliy6RPH728vJCWlgYAqKqqwqVLl+Dj42OOcq2aqfLGqo+4RSIRXnzxRaxatQqdnZ1YtmwZgoKC\n8PXXXwMA7r77bsyfPx8HDhzAwoUL4ejoiL/+9a9mrtry6NPH9957D7W1tXj55ZcBADY2Nti8ebM5\ny7ZI+vSS9KNPLwMCAnTjskKhEMuXL8fEiRPNXLll0aePjzzyCJ577jksXboUWq0WTz31FNzd3c1c\nueV54okncPToUdTU1GDevHl47LHH0NHRAcC0ecNlPYmIiKyIVZ8qJyIiGmsY3ERERFaEwU1ERGRF\nGNxERERWhMFNRERkRRjcRGNEXV0dpk+fjldffVW37d1338Xf/va3IV+7efNmrFmzxpjlEZGeGNxE\nY8T27dsRGhqKlJQUtLW1mbscIhohBjfRGPH999/jkUcewaRJk/pdsWzz5s1ISEjAww8/jN/85jdY\nuXJlnwUSGhsb8fjjjyMuLg533XUXKisrAQDnzp3DPffcg//+7//Gb37zG3z22Wem+khEYxKDm2gM\nyMnJQW1tLWbPno3bb78d33//fb/Py8zMxDPPPIMff/wRkZGRWL9+ve6xX3/9FX/605+QkpKCwMBA\nfPnllwAAb29vfPbZZ/jhhx/w3Xff4dtvv0Vubq5JPhfRWMTgJhoDNm3ahNtuuw0CgQCxsbHIysrq\nd7nBWbNmwd/fHwBwxx134MiRI7rHZs6cCS8vLwBAaGgoCgsLAQAtLS14/vnnsXTpUtx9991Qq9XI\nyckxwaciGpuseq5yIhpaW1sbtm/fDjs7O2zZsgUA0N7ePuy55u3t7XX/trGxQWdnJwDgrbfegkwm\nw//+7/9CJBLh/7d3xyYSAmEYhr/AEgxMJzdREGzCJsxswB7EzAKsQLECQQxFLMBIazAykQsW9m45\nuE2EY5b3CYdhmD/6+GcGJk1Tned5XwEAXtBxAx+u73sZYzSO4/NXsrqu1XXdr7nLsmjbNkmPO/E4\njt+ufxyHPM+T4zha11XzPN9dAoAf6LiBD9e2rZIkeRkLgkDXdWmaJvm+/xwPw1BFUWjfd7muq7Is\n366fZZnyPFfTNDLGKIqi22sA8I3fwQBIerwqH4ZBVVX991YA/IGjcgAALELHDQCARei4AQCwCMEN\nAIBFCG4AACxCcAMAYBGCGwAAixDcAABY5AvEPPdu3QXlzwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f4615177128>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x = np.array(components_count) / 58.\n",
"y = np.array([i[0] for i in l2_ratio])\n",
"plt.plot(x, y, label = \"PCA on Test\", marker='o')\n",
"plt.title(\"L2Ratio vs Alpha Test\")\n",
"plt.xlabel(\"Alpha\")\n",
"plt.ylabel(\"L2Ratio\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "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\na9YsfPHFF/Dz88P8+fOxZs0aREREDPgaBrd1sS1Ng+1oOmxL02A7Dk1TexknzlciK7cKucW16EnM\nQKUMKm9XHD/fd8b6b+4Yd83hbVNLnmZnZyM4OBhBQUEAgOTkZGRmZg4a3ERERNag8nJF0uTRSJo8\nGvXNbTiZq19+9dSlapT0c80c0G+sYs5bzCwe3BUVFfD39zc89vPzQ3Z29qCv8fZ2g0Qy/NVvBvuL\nhYaHbWkabEfTYVuaBtvReEoA4cEK3HVbNC63duDel7eivzHrMm2TWdvVLian1dQ0D/s1HAIyHbal\nabAdTYdtaRpsx2sT6Cvrd6Z6gEJ2ze06WPBb/D5uPz8/lJeXGx5XVFTAz8++Vq0hIiJKTggZ4Hiw\nWT/X4sF9/fXXIz8/H0VFRWhra8PWrVuRmJho6TKIiIiuSfxYP/zmjnEYpXSHWCRglNLdJBPThmLx\noXKJRIJXX30VixcvRmdnJ+6++25ERkZaugwiIqJrFj/WD/Fj/Sx62cEq17inTZuGadOmWeOjiYiI\n7BrXKiciIrIjDG4iIiI7wuAmIiKyIwxuIiIiO8LgJiIisiMMbiIiIjvC4CYiIrIjDG4iIiI7YvH9\nuImIiOjqscdNRERkRxjcREREdoTBTUREZEcY3ERERHaEwU1ERGRHGNxERER2xO6De9++fZg1axZm\nzpyJtLS0Ps/rdDq8+eabmDlzJubNm4fTp09boUrbN1Q7btq0CfPmzcO8efNw3333IScnxwpV2oeh\n2rJHdnY2xo4dix9++MGC1dkXY9ry0KFDuPPOO5GcnIyHHnrIwhXah6HasaGhAU888QTuuOMOJCcn\n49tvv7VClbbvxRdfREJCAubOndvv8xbLG50d6+jo0M2YMUNXWFioa21t1c2bN0+Xm5vb65w9e/bo\nFi1apOvq6tIdP35cN3/+fCtVa7uMacdjx47pamtrdTqdvk3Zjv0zpi17zlu4cKFu8eLFuu+//94K\nldo+Y9qyrq5ON2fOHF1JSYlOp9PpqqqqrFGqTTOmHT/55BPdu+++q9PpdDqtVqubNGmSrrW11Rrl\n2rTDhw/rTp06pUtOTu73eUvljV33uLOzsxEcHIygoCBIpVIkJycjMzOz1zmZmZlISUmBIAgYP348\n6uvrodForFSxbTKmHSdMmAC5XA4AGD9+PMrLy61Rqs0zpi0B4Ouvv8asWbOgUCisUKV9MKYtN2/e\njJkzZ0KtVgMA27MfxrSjIAhoamqCTqdDU1MT5HI5JBKJlSq2XZMmTTL8HuyPpfLGroO7oqIC/v7+\nhsd+fn6oqKgY9Bx/f/8+5zg6Y9rxSunp6Zg6daolSrM7xv5M7ty5E/fff7+ly7MrxrRlfn4+6uvr\nsXDhQtx1113IyMiwdJk2z5h2fPDBB3Hx4kXccsstuOOOO/Dyyy9DJLLreLAKS+UN/6SiYfn555+R\nnp6Ov//979YuxW6tXr0aK1eu5C9GE+js7MTp06fx5ZdfoqWlBffddx9iY2MRGhpq7dLsyo8//oiY\nmBh89dVXKCwsRGpqKiZOnAh3d3drl0b9sOvg9vPz6zVkW1FRAT8/v0HPKS8v73OOozOmHQEgJycH\nv//97/HXv/4V3t7elizRbhjTlqdOncKzzz4LAKipqcHevXshkUhw2223WbRWW2dMW/r7+8PLywtu\nbm5wc3PDxIkTkZOTw+C+gjHtuGHDBixZsgSCICA4OBijRo1CXl4ebrjhBkuXa9cslTd2/Sf/9ddf\nj/z8fBQVFaGtrQ1bt25FYmJir3MSExORkZEBnU6HEydOwMPDAyqVykoV2yZj2rG0tBTPPPMM3n33\nXf5SHIQxbblr1y7Dv1mzZuG1115jaPfDmLacMWMGjh07ho6ODly+fBnZ2dkIDw+3UsW2yZh2DAgI\nwMGDBwEAVVVVuHTpEkaNGmWNcu2apfLGrnvcEokEr776KhYvXozOzk7cfffdiIyMxD/+8Q8AwP33\n349p06Zh7969mDlzJlxdXfHWW29ZuWrbY0w7fvzxx6itrcXrr78OABCLxdiwYYM1y7ZJxrQlGceY\ntgwPDzdclxWJRJg/fz6ioqKsXLltMaYdly5dihdffBHz5s2DTqfDypUr4ePjY+XKbc+zzz6Lw4cP\no6amBlOnTsUzzzyDjo4OAJbNG27rSUREZEfseqiciIjI0TC4iYiI7AiDm4iIyI4wuImIiOwIg5uI\niMiOMLiJHERdXR1uuOEGvPnmm4ZjH330Ed55550hX7thwwYsW7bMnOURkZEY3EQOYsuWLYiNjcXW\nrVvR1tZm7XKI6CoxuIkcxLfffoulS5ciOjq63x3LNmzYgNTUVDzxxBO4/fbb8fDDD/faIKGxsRHL\nly9HcnIy7rvvPlRWVgIAzp07hwceeAD/9V//hdtvvx1ffvmlpb4lIofE4CZyADk5OaitrcWUKVNw\n11134dtvv+33vGPHjuGFF17Atm3bMHnyZKxevdrw3C+//ILf/e532Lp1KyIiIvC3v/0NABAYGIgv\nv+BQzYgAAAGVSURBVPwS3333Hf71r3/hm2++wcWLFy3yfRE5IgY3kQNIT0/HnXfeCUEQkJSUhOzs\n7H63G7zxxhsRFhYGAFiwYAF+/vlnw3MTJkxAQEAAACA2NhaFhYUAgJaWFrz00kuYN28e7r//fmg0\nGuTk5FjguyJyTHa9VjkRDa2trQ1btmyBVCrFxo0bAQDt7e3DXmve2dnZ8LVYLEZnZycAYM2aNVAq\nlfjjH/8IiUSCxx57DK2trab7BoioF/a4iUa4zMxMhIaGYt++fYZdyT7//HN89913fc7NyspCfn4+\nAP018SlTpgz5/g0NDfD394dEIsH58+dx9OhRU38LRHQF9riJRrhvv/0W8+bN63UsLi4OXV1dOHz4\nMK677jrD8QkTJuCdd95BQUEBfH198d577w35/k8++SReeOEFpKenIzQ0FJMmTTL590BEv+LuYEQE\nQD+rfM+ePfjwww+tXQoRDYJD5URERHaEPW4iIiI7wh43ERGRHWFwExER2REGNxERkR1hcBMREdkR\nBjcREZEdYXATERHZkf8fVJC+kc7TIroAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f4616a2cda0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x = np.array(components_count) / 58.\n",
"y = np.array([i[1] for i in l2_ratio])\n",
"plt.plot(x, y, label = \"PCA on Train\", marker='o')\n",
"plt.title(\"L2Ratio vs Alpha Train\")\n",
"plt.xlabel(\"Alpha\")\n",
"plt.ylabel(\"L2Ratio\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dense NN Students"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Команда Девушек"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calc L2Ratio on Train"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def predict(autoencoder, X, scaler):\n",
" X_predict = scaler.inverse_transform(autoencoder.predict(X))\n",
" return X_predict"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"scaler_train = StandardScaler()\n",
"X_train_scaled = scaler_train.fit_transform(X_train)"
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"enc_dims = [1, 2, 4, 8, 12, 29, 40, 45, 50, 55, 58]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"l2_loss_by_files = []\n",
"for enc_dim in enc_dims:\n",
" adds = []\n",
" name = \"model/Girls_model_\"\n",
" autoencoder = load_model(name + str(enc_dim) + \".h5\")\n",
" start = 0\n",
" for i in range(X_train_size.shape[0]):\n",
" finish = X_train_size[i]\n",
" part_data = X_train[start : finish]\n",
" part_data_scaled = X_train_scaled[start : finish]\n",
" part_data_pred = predict(autoencoder, part_data_scaled, scaler_train)\n",
" add = np.sum((np.delete(part_data_pred, X_train_delete_channels[i])-\n",
" np.delete(part_data, X_train_delete_channels[i]))**2)\n",
" print(i, add, X_train_names[i])\n",
" adds.append(add)\n",
" start = finish\n",
" \n",
" l2_loss_by_files.append(adds.copy()) \n",
" print(enc_dim)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"iters = []\n",
"start = 0\n",
"for finish in X_train_size:\n",
" iters.append((start, finish))\n",
" start = finish"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"all_files_data = [X_train[itter[0] : itter[1]] for itter in iters]"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"bad_files = []"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n",
"l2_train = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n",
"l2_train = np.sqrt(l2_train) * 100"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA20AAAGrCAYAAABT3H9KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X1YlHXC9vFzADFfUxAwzFtXSmsrFZMILS1MQ5FE08pN\nK6ys1pZQk/VlrdUSy7rVza1W1rozzbbNDJ+iFxVL3FQUc6Mes3JLzTcwxDdAELyeP7zlEWVgmrlG\nfsD3cxweh85cc14/Rn7XzDnXyzgsy7IEAAAAADCST20PAAAAAADgHKUNAAAAAAxGaQMAAAAAg1Ha\nAAAAAMBglDYAAAAAMBilDQAAAAAMRmkDAFQSGxurrKysi7a+p556Si+//LLT+xcsWKAnn3zS5bwu\nXbpo9+7ddgxNkydP1rx585zeP2/ePEVGRqp3797av3+/wsPDVV5eLkkaPXq03n33XVvG4YmHHnpI\n77//vtP7V6xYoZEjR17EEQEAfi1KGwA0INHR0dqwYUOl285/056enq7IyMhqc/bu3asuXbqorKzM\n4zHNnDlT48aNkyRlZWWpT58+HmdeDPv379f//M//6KOPPtIXX3yh0NBQbdu2Tb6+vhdtDJZlaenS\npYqLi1O3bt3Uu3dvjR49Wunp6RXLLFq0SEOHDr1oYwIA2M+vtgcAAEBdtH//frVq1UqBgYG1NoZn\nn31WmZmZ+vOf/6zrr79ejRo10rZt27R8+XLFxsbW+Hg7SjcAwPvY0wYAqOTcvXE5OTkaNmyYevTo\noV69emn27NmSpFGjRkmSIiIiFB4erm3btlXKKCkpUdeuXXX48GFJ0quvvqrf/va3OnHihCRp/vz5\nmjVrlqT/fwhiUVGRHn74YeXl5Sk8PFzh4eHKzc2VJJ06dUrJyckKDw9XbGysvv7662p/hnXr1qlf\nv36KjIzU888/r9OnT0uS9uzZo/vuu0+RkZGKjIzUxIkTdezYsYrHbd++XUOHDlV4eLiSkpJUUlJS\nZf6GDRs0ZsyYirFOnjy5xr2Py5cv18CBAxUREaEHH3xQ+/btk3Rmb1lKSoqioqLUo0cPxcXF6fvv\nv6/255Okn376ScuWLdPcuXPVu3dvXXLJJfL19VXPnj313HPPVSx37mGaK1as0D333KOUlBRFRkZq\nwYIFlTLdHQsAwLsobQAAp2bNmqX77rtPX375pVavXq2BAwdKkpYuXSpJ2rJli7Zt26bw8PBKj2vc\nuLGuu+46bdmypWK50NBQbd26teLfN9xwQ6XHNG3aVH//+98VHBysbdu2adu2bQoJCZEkrV27VrGx\nscrOzlZ0dLSeeeaZase9evVqvffee3r//fe1du1avffee5LOlJJHHnlE69ev18cff6yDBw9WFJfS\n0lKNGzdOQ4YM0ebNmxUTE6NVq1ZVmd+rV69KYz23JFVlzZo1Wrhwof76179q48aNuv766zVx4kRJ\n0r/+9S9lZ2fr008/1datWzV//ny1atWq2jxJ2rRpky677DJdd911NS57rpycHLVv315ffPGFHnvs\nsUr3uTsWAIB3UdoAoIEZN26cevbsWfFnxowZTpf18/PTnj17dPjwYTVr1kzdu3d3eT0RERHasmWL\nysrK9N1332n06NHasmWLSkpK9PXXX6tnz54uZ11//fXq27evfH19NWTIEO3YsaPa5R9++GG1atVK\noaGhuu+++/Thhx9Kkjp06KDevXvL399fAQEBSkhIqCiWX331lU6dOqX7779fjRo1UkxMzK8uRM78\n4x//0NixYxUWFiY/Pz89+uij+vbbb7Vv3z75+fmpsLBQP/74oyzLUlhYmIKDg2vMLCgoUJs2bSrd\n1qdPH/Xs2VPXXXddxZ688wUHB2v06NHy8/PTJZdcUuk+d8cCAPAuShsANDAvv/yysrOzK/48/fTT\nTpedNWuWdu3apYEDB+rOO+/UZ5995vJ6brjhBmVlZWn79u3q3LmzevfurS1btujf//63OnTooNat\nW7ucdW45ueSSS1RSUlLt+ViXXXZZxd/btWunvLw8SdIvv/yi8ePH6+abb1aPHj00adIkFRQUSJLy\n8vIUEhIih8NR8djQ0FCXx1id/fv3KyUlpaIo33DDDbIsS7m5uYqKitK9996rmTNnKioqStOnT684\njLQ6rVq10qFDhyrdlpmZqU2bNqm0tFSWZVX5uLZt2zrNdHcsAADvorQBAJzq2LGj5s6dq40bN+rh\nhx9WYmKiioqKKhUbZ8LDw/XTTz9p9erVioiI0BVXXKH9+/dr3bp1ioiIqPIxruS64sCBAxV/379/\nf8Xeorlz58rhcOiDDz7Ql19+qRdeeKGi3AQFBSk3N7dS2dm/f78t47nssss0Y8aMSmU5JydHPXr0\nkCTdd999WrFihT766CPt2rVLixYtqjHzxhtv1MGDB2s8v+98NT3H7owFAOBdlDYAgFMrV67U4cOH\n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\nLCyxJS/5hqnV3p+be1DPPvu0CgoOS3LojjuG6q67Rla57C+//KJZs57WvHkvV7p9+PA4NW3aVD4+\nvvL19dVrr535ruoffvhOL7wwW6WlpfL19dXEiX/Ub397rS0/V1UobQAAAADqHV9fPz3++Hh16XKV\niooKNWbMaEVERFZ8Wfa5srI26IYboqrMeemlhWrVqlWl21555SUlJDysqKje2rjxX3rllZf017+m\neuXnkDg8EgAAAEA91KZNG3XpcpUkqWnTZurYsaN++SWvymWzsjbqxht7uZztcDhUVFQoSTpx4oTa\ntAnyfMDVYE8bAAAAgHrtwIH9+v7776o8hLG8vFx79uyucg+cw+FQUtLv5ePjoyFDhmnIkGGSpMTE\niZow4XG9/PJfdPr0af3tb697dfyUNgAAAAD1VlFRkaZNS9YTT0xUs2bNL7h/+/Zv9NvfXlPlY195\nZZGCgoJVUHBYSUnj1KFDR3Xv3kNpacuVmDhBt9zSTxkZqzV79jP6y19e8drPQGkDAABAnbd0SaBL\ny/n4OHT6tFXjcuOTPB0RTFBWVqY//SlZAwbEqG/f6CqX2bRpgyIjqz40MigoWJLUunWA+vS5Rdu3\n/191795DH3/8oZ544klJUnT0bXr++We98wP8L0obAABoMNZnjqlxGV9fH5WXn65xOd7UA2azLEuz\nZ89Uhw6/0T33jHK63NatW3TvvfddcHtxcbEs67SaNm2m4uJibdmSpQceeEiS1KZNkLZt26oePXpq\n69Ytuvzy9l77OSRKGwAAaEB2715Z4zKu7omRRng+IKABSb5hqoKCWujQoeMXZX05OV/p008/UljY\nFXrggd9Jkh555PeKirqpYpmCggL5+/uradNmFzz+8OF8TZ06SdKZ897697+94mIlycl/0l/+8qLK\ny8vl7++v5ORpXv1ZKG0AAAAA6p1u3brrX//KrnaZzZs3KiLixirva9fuci1e/LbT7NdfX+rxGF1F\naQMAAADQIN1++6DaHoJL+J42AAAAADAYpQ0AAAAADEZpAwAAAACDUdoAAAAAwGCUNgAAAAAwGFeP\nBAAAAOB1c+b4q1kzqbDQ35a85OTSGpcZPjxOTZs2lY+Pr3x9ffXaa0skSa+9tlAffJCmVq1aS7rw\n+9vONXFiov74x2kKDg6puM3Z48vKyvTcc8/o++93qLy8XDExsRo9OsHTH5XSBgAAAKD+eumlhWrV\n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\nEyfcznf2emXX/HWWb9f8dZZv1/x1lm/X/K3p/YKn89dZvh3zt7qx2zF3neXbNX+d5ds1f53l2zV/\nnb0XtGvuOsu387XXKBbcUlZWZvXr18/as2ePVVJSYsXFxVk//PCDrevYvHmz9c0331ixsbG25lqW\nZeXm5lrffPONZVmWdfz4cWvAgAG2jv/06dPWiRMnLMuyrNLSUmv48OHWtm3bbMs/6/XXX7cmTJhg\njR071vbsW2+91crPz7c996zk5GTrn//8p2VZllVSUmIdPXrUK+spKyuzevXqZe3du9e2zIMHD1q3\n3nqrVVxcbFmWZSUmJlrvvfeebfnfffedFRsbaxUVFVmnTp2y7r//fmvXrl0eZVY1n55//nlr4cKF\nlmVZ1sKFC605c+bYmr9z507rP//5jzVq1CgrJyfH/cE7yV+/fr116tQpy7Isa86cObaP//jx4xV/\nX7x4sTV9+nRb8y3Lsvbv32+NGTPGuuWWWzyab1Xlv/TSS9aiRYvczqwpf+PGjdb9999vlZSUWJZl\nWb/88ott2eeaPXu2tWDBAreyneUnJCRYn3/+uWVZlvX5559bo0aNsjV/2LBhVlZWlmVZlvXuu+9a\n8+bNczvf2euVXfPXWb5d89dZvl3z11m+XfO3uvcLdsxfZ/l2zF9n2XbNXVfeS3kyf53l2zV/neXb\nNX+dvRe0a+46y7fztdck7GlzU05Ojjp06KD27dvL399fsbGxysjIsHUdERERuvTSS23NPCs4OFjX\nXHONJKl58+bq1KmTR5+in8/hcKhZs2aSpLKyMpWVlcnhcNiWL0kHDx7U559/ruHDh9uaezEcP35c\nW7ZsqRi7v7+/WrZs6ZV1bdy4Ue3bt1e7du1szS0vL9fJkydVVlamkydPKjg42Lbs//znP+rataua\nNGkiPz8/RUREaNWqVR5lVjWfMjIyFB8fL0mKj4/XmjVrbM0PCwtTp06d3M6sKf+mm26Sn9+ZiwB3\n79690vdj2pHfvHnzir8XFxd7NIedbc9mz56tSZMmebx98Ob20ln+22+/rbFjx8rf31+SFBgYaFv2\nWZZl6eOPP/boiIuq8h0OhwoLCyWd2R55Mn+ryt+1a5ciIiIkSb179/Zo/jp7vbJr/jrLt2v+Osu3\na/46y7dr/lb3fsGO+evN9yPOsu2auzWN3dP56yzfrvnrLN+u+evsvaBdc9dZvp2vvSahtLkpNzdX\nbdu2rfh3SEiIraXnYtq7d6++/fZbdevWzdbc8vJyDRkyRL169VKvXr1sz09JSdGkSZPk4+O9X+OE\nhAQNGzZM77zzjq25e/fuVUBAgKZMmaL4+HhNmzZNRUVFtq7jrPT0dNsPsQ0JCdGYMWN066236qab\nblLz5s1100032ZbfuXNnbd26VQUFBSouLlZmZqZHhcSZ/Pz8ihe7oKAg5efn276Oi+W9995Tnz59\nbM+dN2+e+vbtqw8++EBPPPGErdlr1qxRcHCwrrrqKltzz7V06VLFxcVpypQpHh3+WpVdu3YpOztb\nI0aM0KhRozw6xNCZ7OxsBQYGqmPHjrbmTp06VXPmzFHfvn31/PPPa8KECbbmX3nllRUfZH7yySc6\ncOCALbnnvl55Y/566/Wwpny75u/5+XbP33PzvTF/zx+/nfP33GxvzN2q/m/tnL/n5ntj/p6bb+f8\nreq9oJ1z19vvNU1CaWvgCgsLlZiYqKlTp1b6VM4Ovr6+WrlypdatW6ecnBx9//33tmV/9tlnCggI\n0LXXXmtb5vnefvttrVy5Un//+9/11ltvacuWLbZll5WVafv27Ro5cqTS0tLUpEkTr5wXWVpaqrVr\n1yomJsbW3KNHjyojI0MZGRlav369iouLtXLlStvyw8LC9NBDD+nBBx/UQw89pKuuusqr5Vw684md\n3XuDL5ZXX31Vvr6+uuOOO2zPHj9+vNatW6e4uDgtXbrUttzi4mItXLjQ9iJ4rpEjR2rNmjVauXKl\ngoOD9dxzz9maX15erqNHj+qf//ynkpOTlZSUJMvmb9H58MMPvXJe89tvv60pU6Zo3bp1mjJliqZN\nm2Zr/qxZs7Rs2TINGzZMhYWFFXs0PFHd65Ud89ebr4fV5ds1f6vKt3P+npvv6+tr+/w9f/x2zt/z\ns+2eu87+b+2av+fn2z1/z8+3c/7W9F7Q07nrzfeapqG0uSkkJKTSJ/+5ubkKCQmpxRH9eqdOnVJi\nYqLi4uI0YMAAr62nZcuWioyM1Pr1623L/PLLL7V27VpFR0drwoQJ2rRpk5588knb8iVV/H8GBgaq\nf//+tn6K3rZtW7Vt27biE6GYmBht377dtvyzMjMzdc0116hNmza25m7YsEGXX365AgIC1KhRIw0Y\nMMDWC6lI0ogRI7RixQq99dZbuvTSS23f0yCd+b/Ny8uTJOXl5SkgIMD2dXjbihUr9Pnnn+vFF1/0\naumMi4vz+BDVc+3Zs0d79+6tOFH/4MGDGjZsmA4dOmTbOtq0aSNfX1/5+PhoxIgRtp+QHhISov79\n+8vhcKhr167y8fFRQUGBbfllZWVavXq1Bg0aZFvmWe+//37Fdn/gwIG27yUMCwvT66+/rhUrVig2\nNlbt27f3KK+q1ys756+3Xw+d5ds1f2sav6fz9/x8u+dvVeO3a/5WlW3n3HX23Ns1f6vKt3P+VpVv\n9/yVKr8X9MZrrzfea5qG0uam6667Trt27dLPP/+s0tJSpaenKzo6uraH5TLLsjRt2jR16tRJCQkJ\ntucfPny44kpYJ0+e1IYNG2w9vnjixInKzMzU2rVrNXfuXN1444168cUXbcsvKiqquFpSUVGRvvji\nC1155ZW25QcFBalt27b68ccfJZ057ywsLMy2/LPS09MVGxtre25oaKi++uorFRcXy7Isr4z/7OES\n+/fv16pVqxQXF2drvnTmCqFpaWmSpLS0NPXr18/2dXhTZmamFi1apFdffVVNmjSxPX/Xrl0Vf8/I\nyLB1Dnfp0kUbN27U2rVrtXbtWrVt21YrVqxQUFCQbes4+6ZAOnMopp1zWJJuu+02ZWVlSZJ++ukn\nnTp1Sq1bt7Yt/+x289xD8e0SHByszZs3S5I2bdpk+4ciZ+fv6dOn9eqrr+qee+5xO8vZ65Vd89fb\nr4fO8u2av87y7Zq/VeXbOX+djd+O+ess2665W93vjh3z11m+XfPXWb5d89fZe0G75q6332uaxmHZ\nfSxHA7Ju3TqlpKSovLxcd955px577DFb8ydMmKDNmzeroKBAgYGB+sMf/qARI0bYkp2dna17771X\nnTt3rjjsbMKECerbt68t+Tt27NDkyZNVXl4uy7IUExOjxx9/3Jbs82VlZen111/XwoULbcv8+eef\nNW7cOElnDoEaPHiw7f+/3377raZNm6ZTp06pffv2mj17tq0XUigqKtKtt96qNWvWqEWLFrblnvXS\nSy/po48+kp+fn66++mrNmjXLlkOgzvrd736nI0eOyM/Pr+KS4p6oaj7ddtttSkpK0oEDBxQaGqr5\n8+erVatWtuW3atVKzzzzjA4fPqyWLVvq6quv1muvvWZbfmpqqkpLSyvG3K1bN82cOdO2/MzMTP30\n009yOBxq166dZsyY4fYRBTVtz6Kjo7V8+XK3P3GtKn/z5s3asWOHJKldu3aaOXOm2yfsV5U/ZMgQ\nTZ06VTt27FCjRo2UnJzs1u+ps+dm8uTJ6tatm0aOHOnWmKvL/81vfqOUlBSVlZWpcePGevrpp90+\n3Lyq/KKiIi1btkyS1L9/f02cONHtPUnOXq+6du1qy/x1ll9aWmrL/HWW/+yzz9oyf53lL1++3Jb5\n68r7BU/mr7P8Dz/80OP56yw7KirKlrlb3XNjx/x1lt+sWTNb5q+z/F27dtkyf529FywoKLBl7jrL\nX716tW2vvSahtAEAAACAwTg8EgAAAAAMRmkDAAAAAINR2gAAAADAYJQ2AAAAADAYpQ0AAAAADEZp\nAwAAAACDUdoAAAAAwGD/Dy06/z4IScgLAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fb4198c6470>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Y = np.arange(len(l2_train[0]))\n",
"plt.figure(figsize=(15, 7))\n",
"plt.bar(Y, l2_train[0], align='center', alpha = 0.5, label = '1/ 58', color = 'red')\n",
"plt.bar(Y, l2_train[1], align='center', alpha = 0.5, label = '2 / 58', color = 'green')\n",
"plt.bar(Y, l2_train[-2], align='center', alpha = 0.5, label = '55 / 58', color = 'blue')\n",
"plt.bar(Y, l2_train[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n",
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n",
"plt.legend(loc = 'best')\n",
"plt.title('Hist with bad files. Girls')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"bad_files = [1, 10, 12, 13, 16, 17, 25, 26, 29, 30]"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [],
"source": [
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n",
"l2_train = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n",
"l2_train = np.sqrt(l2_train) * 100"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "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\nFBwcoueemy9J2rJlk1599SWVlVlq3LixkpKe1qWX1vzztysN5qlTp2rt2rUKDg7WRx99JEk6evSo\nHnvsMf36669q06aNkpOT1aJFC0nSwoULtWzZMvn5+emJJ57QTTfdVLNLAAAwUuC82Z4HNmmowLxC\nr+rlT55W6TiDBsXpzjvv0syZ088blpm5QT16RJ33esOGDfXGG28rJKTZOXeifOGFuZo79//T5Zdf\noeXL39eSJa8rKelpr3q2o9JD2UOGDNGiRYvOeS0lJUVRUVFauXKloqKilJKSIknatWuXVqxYoRUr\nVmjRokWaMWOGSktLa6ZzAAB+47rrrlfz5s3LHbZlyyZ169ajyrUcDikvL0+SlJd3Uq1ahfikx8pU\nGsyRkZHuveEz0tPTFR8fL0mKj4/X6tWr3a/HxsYqICBAbdu2Vbt27bR9+/YaaBsAgKo7evSonE6n\nmjZtet6woqIijRlzr4YPH66MjLXu16dMeVKTJj2qO+4YpH/+82ONHDn6gvRq6xxzTk6OXC6XJCkk\nJEQ5OTmSpKysLHXt2tU9XmhoqLKysnzQJgAA9m3a9IW6d+9Z7rBly/5XISEunTp1VCNHjlJ4+JVq\n0+ZSvffe23r++ZfUqVNnvf32Ur388nxNmfJkjfda7Yu/HA6HHA5HtWq0bBl4wW8e7umpHhezlok9\n+bJWVes8/fTNtufx9NNrvRrfxPfJl7Xoyfe16vv66VWdJg0rHlzJ8PPG9zDv3/ZUWNhETqf/Oa9/\n9dUmJSQklNv/f15rpqionjp4cI8uuyxUP/+8SzfffPqc9LBhd+iBBx7w6d/EE1vBHBwcrOzsbLlc\nLmVnZysoKEjS6T3kgwcPusfLyspSaGhopfUu5GO2JJ13gt+EWib25Mta3tRZvLhFhcP9/BwqK7PK\nHfbII1Xv1cT3yZe16KlmahUVl3gcFtDAWeFwb/o18b3ytk5FF3c1adJQed5e/FXOvMvr6ciRPJWU\nlLpftyxL3333vVq1uvS8cY8fP65GjRopICBA/v7F2rx5i4YMGaHCQoeOHz+uL7/8Vpdd1k7//Ge6\nLr30Mp8+pthTyNsK5ujoaKWmpmrs2LFKTU1VTEyM+/WJEycqISFBWVlZ2r17t7p06WK/awAAvPDU\nU9P01Vdf6ujRo7rjjkG6//6xuvLKDurQoWO5R3f37PlZzz8/Ww6Hn/z9HRo5crSuuKK9JGny5Cf0\n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\nOromZgUAQJ3irJGiTqemT5+uBx54QKWlpbrzzjt11VVX1cSsAACoU2rkHDMAALCHO38BAGAQghkA\nAIPUq2D21W1CDxw4oFGjRmnQoEGKjY3VkiVLbNcqLCzU0KFDdfvttys2NlYLFiywXUs6fde1+Ph4\n/elPf6pWnejoaMXFxWnw4MEaMmRItWodP35ciYmJGjBggAYOHKht27Z5XeOnn37S4MGD3f9df/31\neuONN2z39MYbbyg2Nla33XabJkyYoMLCQlt1lixZottuu02xsbFe9zN16lRFRUXptttuc7/2ySef\nKDY2VldffbW++eabatU6Y/HixerYsaOOHDliu9bLL7+sm266yf3+r1u3zlad77//XsOHD3evV9u3\nb7fd086dO3XXXXcpLi5ODz74oE6ePFlpHU/b7tGjR5WQkKD+/fsrISFBx44ds13L27+hpzrPPfec\nBgwYoLi4OD3yyCM6fvy47VrJycnu7XnMmDFVuq9EZZ9zVV2vPNUZP368e32Kjo7W4MGDbffk7Xrl\n6XPX7vbnc1Y9UVJSYsXExFh79+61CgsLrbi4OOvf//63rVpZWVnWt99+a1mWZZ04ccLq37+/7Vpl\nZWXWyZMnLcuyrKKiImvo0KHWtm3bbNWyLMtavHixNWHCBGvs2LG2a1iWZfXt29fKycmpVo0zJk+e\nbP33f/+3ZVmWVVhYaB07dqxa9UpKSqwbb7zR2rdvn63pDx48aPXt29cqKCiwLMuyEhMTrQ8++MDr\nOj/88IMVGxtr5efnW8XFxdbo0aOt3bt3V3n6TZs2Wd9++60VGxvrfm3Xrl3Wjz/+aI0cOdLavn17\ntWpZlmXt37/fGjNmjHXzzTdX+e9ZXq0FCxZYixYtqnI/nuokJCRYa9eutSzLstauXWuNHDnSdq0h\nQ4ZYmZmZlmVZ1vvvv2/Nnz+/0jqett3nnnvOWrhwoWVZlrVw4UJr3rx5tmt5+zf0VGf9+vVWcXGx\nZVmWNW/evGr1dOLECfc4S5YssZ588knbtSzLu/WqKp+Xc+bMsV5++WXbPXm7Xnn63LW7/flavdlj\n9uVtQl0ulzp16iRJatq0qdq3b2/7zmYOh0NNmjSRJJWUlKikpEQOh8NWrYMHD2rt2rUaOnSorelr\nwokTJ7R582Z3TwEBAWrevHm1am7cuFFt27ZVmzZtbNcoLS3VqVOnVFJSolOnTsnlcnld48cff1SX\nLl3UuHFjOZ1ORUZGauXKlVWePjIyUi1atDjntfDwcLVv397rXsqrJUlz5szRpEmTvFqnPNXyRU8O\nh0N5eXmSTq8bVX3fy6u1e/duRUZGSpJ69epVpffe07abnp6u+Ph4SVJ8fLxWr15tu5a3f0NPdXr3\n7i2n8/QPZ6677rpz7g3hba2mTZu6xykoKKjS+lDR55w361Vln5eWZemTTz4p92hPVWt5u155+ty1\nu/35Wo38XMpE5d0mtKqH0Sqyb98+ff/99+ratavtGqWlpRoyZIj27t2re+65x3at2bNna9KkSe4V\ntLoSEhLk7++vu+66S3fddZetGvv27VNQUJCmTp2qnTt3qlOnTkpKSlJgYKDtvlasWFGljdiT0NBQ\njRkzRn379lXDhg3Vq1cv9e7d2+s6HTp0UHJysnJzc9WoUSNlZGSoc+fOtvvytdWrV8vlcunqq6/2\nSb0333xTqamp6ty5s6ZMmWIrvKdNm6b7779fzz33nMrKyvTuu+/a7ueqq65Senq6brnlFn366ac6\ncOCAV9Ofve3m5OS4P8xDQkKUk5Nju1Z1eKrzwQcfaODAgdWqNX/+fKWmpqpZs2ZaunSp7VrVWa/K\nW74tW7YoODhYl19+ue1adtYrX33u1oR6s8dcE/Ly8pSYmKhp06ad843UW/7+/kpLS9O6deu0fft2\n/etf//K6xmeffaagoCCfBcM777yjtLQ0/f3vf9dbb72lzZs326pTUlKiHTt2aMSIEUpNTVXjxo2r\ndX6/qKhIa9as0YABA2zXOHbsmNLT05Wenq7169eroKBAaWlpXtcJDw/XAw88oPvvv18PPPCArr76\navn5mbFJFRQUaOHChXr00Ud9Um/EiBFavXq10tLS5HK5NHfuXFt13nnnHU2dOlXr1q3T1KlTlZSU\nZLunWbNm6e2339aQIUOUl5engICAKk9b0bbrcDi8OsLgq88BT3Vee+01+fv76/bbb69Wrccee0zr\n1q1TXFyc3nzzTVu1/P39ba9Xnpbvo48+8vqL9m9r2VmvfPG5W1PM+BS5AHx9m9Di4mIlJiYqLi5O\n/fv390WLat68uXr06KH169d7Pe3WrVu1Zs0aRUdHa8KECfriiy/0+OOP2+7lzHsTHBysfv362T66\n0Lp1a7Vu3dr9bXTAgAHasWOH7b4yMjLUqVMntWrVynaNDRs26NJLL1VQUJAaNGig/v3727ogTZKG\nDRum5cuX66233lKLFi28/tZfU/bu3at9+/a5L6w5ePCghgwZokOHDtmq16pVK/n7+8vPz0/Dhg2z\nfWHMhx9+6N5eBg4cWK2jVuHh4Vq8eLGWL1+u2NhYtW3btkrTlbftBgcHKzs7W5KUnZ2toKAg27Xs\n8FRn+fLlWrt2rV544YUqf1morKe4uLgqn3L5bS2765WnnkpKSrRq1SoNGjSoSv14qlWd9ao6n7s1\npd4Esy9vE2pZlpKSktS+fXslJCRUq68jR464r7Y8deqUNmzYYOscx8SJE5WRkaE1a9boxRdfVM+e\nPfXCCy/Y6ik/P999hWt+fr4+//xz23duCwkJUevWrfXTTz9JOn1+ODw83FYt6fRh7NjYWNvTS1JY\nWJi+/vprFRQUyLKsavV05pDn/v37tXLlSsXFxVWrN1/p2LGjNm7cqDVr1mjNmjVq3bq1li9frpCQ\nEFv1zoSWdPoQud31weVyadOmTZKkL774olpfZM6892VlZXrttdd09913VzqNp203Ojpaqampkk4/\ndCcmJsZ2LW95qpORkaFFixbptddeU+PGjatVa/fu3e7/T09Pr9JnTHm17KxXFb1PZz7vzj7NaGf5\nvF2vfPW5W1Pq1Z2/1q1bp9mzZ7tvE/rQQw/ZqrNlyxbde++96tChg/vQ5YQJE9SnTx+va+3cuVNT\npkxRaWmpLMvSgAEDNG7cOFt9nZGZmanFixdr4cKFtqb/5Zdf9Mgjj0g6fR7mtttus/1eSad/ypCU\nlKTi4mK1bdtWc+bMsXV+Mj8/X3379tXq1avVrFkz2/1I0oIFC/Txxx/L6XTqmmuu0axZs7w6FHrG\nPffco6NHj8rpdLp/0lNVEyZM0KZNm5Sbm6vg4GD9+c9/1iWXXKJnn31WR44cUfPmzXXNNdfo9ddf\nt1Vr2LBh7uHR0dFatmxZlfYEy6u1adMm7dy5U5LUpk0bPfPMM5VeYFNenSuuuEKzZ89WSUmJGjZs\nqKeeeqpKp1/Kq5Wfn6+3335bktSvXz9NnDix0r1KT9tuly5dNH78eB04cEBhYWFKTk7WJZdcYqtW\nUVGRV39DT3VmzpypoqIidx9du3bVM888Y6unZcuW6eeff5bD4VCbNm00Y8aMSo8YVuVzrirrVUV1\npkyZoq5du2rEiBEV9lJZrSZNmni1Xnn63F21apWt7c/X6lUwAwBgunpzKBsAgNqAYAYAwCAEMwAA\nBiGYAQAwCMEMAIBBCGYAAAxCMAMAYBCCGQAAg/w/MczUzStzhrQAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fb41996e588>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Y = np.arange(len(l2_train[0]))\n",
"plt.bar(Y, l2_train[0], align='center', alpha = 0.5, label = '1/ 58', color = 'red')\n",
"plt.bar(Y, l2_train[1], align='center', alpha = 0.5, label = '2 / 58', color = 'green')\n",
"plt.bar(Y, l2_train[-2], align='center', alpha = 0.5, label = '55 / 58', color = 'blue')\n",
"plt.bar(Y, l2_train[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n",
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n",
"plt.legend(loc = 'best')\n",
"plt.title('Hist without bad files. Girls')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 90.06698074, 86.20024759, 97.55251847, 96.2766507 ,\n",
" 88.90531161, 84.75053167, 83.44301817, 83.11996269,\n",
" 81.92456527, 81.33973688, 81.29431417])"
]
},
"execution_count": 122,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"l2_train = np.mean(l2_train, axis = 1)\n",
"l2_train"
]
},
{
"cell_type": "code",
"execution_count": 126,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "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\nUGQCX/zzDlAAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fb4199a3208>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x = np.array(enc_dims) / 58.\n",
"plt.figure(figsize=(15, 7))\n",
"\n",
"y = np.array(l2_train)\n",
"plt.plot(x, y, marker='o', alpha = 0.5, label = \"l2ratio_train\")\n",
"\n",
"plt.title(\"l2ratio_train vs Alpha\")\n",
"plt.xlabel(\"Alpha\")\n",
"plt.ylabel(\"l2ratio\")\n",
"plt.legend(loc = 'best')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calc L2Ratio on Test"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"scaler_test = StandardScaler()\n",
"X_test_scaled = scaler_test.fit_transform(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 240,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"enc_dims = [1, 2, 4, 8, 12, 29, 40, 45, 50, 55, 58]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"l2_loss_by_files = []\n",
"for enc_dim in enc_dims:\n",
" adds = []\n",
" name = \"model/Girls_model_\"\n",
" autoencoder = load_model(name + str(enc_dim) + \".h5\")\n",
" start = 0\n",
" for i in range(X_test_size.shape[0]):\n",
" finish = X_test_size[i]\n",
" part_data = X_test[start : finish]\n",
" part_data_scaled = X_test_scaled[start : finish]\n",
" part_data_pred = predict(autoencoder, part_data_scaled, scaler_test)\n",
" add = np.sum((np.delete(part_data_pred, X_test_delete_channels[i])-\n",
" np.delete(part_data, X_test_delete_channels[i]))**2)\n",
" print(i, add, X_test_names[i])\n",
" adds.append(add)\n",
" start = finish\n",
" \n",
" l2_loss_by_files.append(adds.copy()) \n",
" print(enc_dim)"
]
},
{
"cell_type": "code",
"execution_count": 221,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"iters = []\n",
"start = 0\n",
"for finish in X_test_size:\n",
" iters.append((start, finish))\n",
" start = finish"
]
},
{
"cell_type": "code",
"execution_count": 222,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"all_files_data =[X_test[itter[0] : itter[1]] for itter in iters]"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"bad_files = []"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n",
"l2_test = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n",
"l2_test = np.sqrt(l2_test) * 100"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3MAAAGrCAYAAABqu84RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xt0VOW9//HPZCaDEFAhJBNBij8o6ipCQLmIaKihAUlM\niShtsaCmKpXaUsBKAZWL3JT2CEpbD5RasaitIg2npFYkVEgFuQlGDqKlNcrFTDDcE3Jl//6gziEw\nOzN7MhNmT96vtVwL957nO8+ePLNnPvPsi8MwDEMAAAAAAFuJu9gdAAAAAABYR5gDAAAAABsizAEA\nAACADRHmAAAAAMCGCHMAAAAAYEOEOQAAAACwIcIcACBoWVlZ2rJlS5M93/Tp0/XrX//adP3ixYv1\ns5/9LOh611xzjT777LNwdE1TpkzRwoULTdcvXLhQ/fv318CBA3Xo0CH17t1bdXV1kqQxY8bo9ddf\nD0s/GuOBBx7Qn//8Z9P1q1at0qhRo5qwRwAAKwhzAABJUnp6ujZt2lRv2flf5vPz89W/f/8G6xw4\ncEDXXHONamtrG92nJ598Ug8//LAkacuWLUpLS2t0zaZw6NAh/f73v9df//pXvfvuu+rQoYN27twp\np9PZZH0wDEMrVqxQdna2UlNTNXDgQI0ZM0b5+fm+xyxbtkx33HFHk/UJABBerovdAQAAYs2hQ4d0\n+eWXKzEx8aL1Yc6cOdq4caNmzpypG264QfHx8dq5c6dWrlyprKysgO3DEcYBAJHFzBwAIGjnzt4V\nFRVpxIgRuv7663XTTTdp/vz5kqTRo0dLkvr27avevXtr586d9WpUVVWpZ8+eOnLkiCTp+eef1ze+\n8Q2dOnVKkrRo0SLNnTtX0v8dylhRUaEHH3xQpaWl6t27t3r37i2v1ytJqqmp0eTJk9W7d29lZWXp\nww8/bHAbNmzYoMGDB6t///56+umndebMGUnS559/rnvuuUf9+/dX//799cgjj+jEiRO+dnv27NEd\nd9yh3r17a8KECaqqqvJbf9OmTfrBD37g6+uUKVMCzlauXLlSw4YNU9++fXX//ffr4MGDks7Ors2b\nN08DBgzQ9ddfr+zsbH3yyScNbp8kffrpp3rllVf0zDPPaODAgbrkkkvkdDrVp08fPfXUU77HnXu4\n56pVq/S9731P8+bNU//+/bV48eJ6NUPtCwAgcghzAICQzJ07V/fcc4/ef/99vf322xo2bJgkacWK\nFZKkbdu2aefOnerdu3e9di1atFCPHj20bds23+M6dOigHTt2+P6/X79+9dq0atVKv/3tb5WcnKyd\nO3dq586d8ng8kqT169crKytL27dvV3p6umbPnt1gv99++2298cYb+vOf/6z169frjTfekHQ2rPzw\nhz9UYWGh3nzzTZWUlPgCTXV1tR5++GENHz5cW7du1W233aa1a9f6rX/TTTfV6+u54cmfdevWacmS\nJfrVr36lzZs364YbbtAjjzwiSfrHP/6h7du366233tKOHTu0aNEiXX755Q3Wk6T33ntPV1xxhXr0\n6BHwsecqKipSp06d9O6772rcuHH11oXaFwBA5BDmAAA+Dz/8sPr06eP7b9asWaaPdblc+vzzz3Xk\nyBElJCSoV69eQT9P3759tW3bNtXW1urjjz/WmDFjtG3bNlVVVenDDz9Unz59gq51ww03aNCgQXI6\nnRo+fLj27t3b4OMffPBBXX755erQoYPuuecerVmzRpLUuXNnDRw4UG63W+3atVNubq4vcH7wwQeq\nqanRvffeq/j4eN12222Wg5KZP/7xjxo7dqy6du0ql8ulhx56SB999JEOHjwol8ul8vJy/fvf/5Zh\nGOratauSk5MD1jx69Kjat29fb1laWpr69OmjHj16+Gb+zpecnKwxY8bI5XLpkksuqbcu1L4AACKH\nMAcA8Pn1r3+t7du3+/6bMWOG6WPnzp2r4uJiDRs2THfeeaf+/ve/B/08/fr105YtW7Rnzx5dffXV\nGjhwoLZt26Zdu3apc+fOatu2bdC1zg0tl1xyiaqqqho83+uKK67w/btjx44qLS2VJH355ZeaOHGi\nbrnlFl1//fV69NFHdfToUUlSaWmpPB6PHA6Hr22HDh2C7mNDDh06pHnz5vkCdL9+/WQYhrxerwYM\nGKDvf//7evLJJzVgwAA98cQTvsNRG3L55Zfr8OHD9ZZt3LhR7733nqqrq2UYht92KSkppjVD7QsA\nIHIIcwCAkFx11VV65plntHnzZj344IMaP368Kioq6gUeM71799ann36qt99+W3379tXXv/51HTp0\nSBs2bFDfvn39tgmmbjC++OIL378PHTrkm1165pln5HA49Je//EXvv/++fvGLX/hCT1JSkrxeb70Q\ndOjQobD054orrtCsWbPqheiioiJdf/31kqR77rlHq1at0l//+lcVFxdr2bJlAWveeOONKikpCXj+\n4PkCvcah9AUAEDmEOQBASFavXq0jR44oLi5Ol156qSQpLi5O7dq1U1xcnPbv32/atmXLlrruuuv0\n8ssv+86P6927t/74xz+ahrnExEQdO3ZMJ0+ebFS/f/e73+n48eP64osv9NJLLykzM1OSVF5erlat\nWqlNmzbyer31gkqvXr3kcrn00ksvqaamRmvXrrUclMx873vf09KlS/XPf/5TknTy5Em9+eabks6e\nw/bVIZ4tW7aU2+1WXFzgj+4uXbrou9/9riZNmqR3331XlZWVqquru+BiNFaE2hcAQORwawIAQEgK\nCwv11FNPqbKyUh06dNDChQt951k99NBDGjVqlGpra7Vs2TK/59P17dtXe/bsUc+ePSWdPfTyrbfe\nMg1zXbt2VVZWlr71rW+prq6u3v3SrBg8eLBGjBihU6dO6Y477tBdd90lSfrxj3+sn//85+rTp4++\n9rWvafjw4XrxxRclSW63W4sXL9YTTzyhRYsWadCgQcrIyAjp+c+XkZGh8vJyTZo0SQcPHlSbNm10\n0003adiwYSovL9e8efN04MABud1u3Xzzzbr//vslSf/93/+t7du3m86OzZgxQ3/4wx/01FNP6bPP\nPtOll16qq666SgsXLgzpENGG+gIAuDgchtmB8wAAAACAqMXxEQAAAABgQ4Q5AAAAALAhwhwAAAAA\n2BBhDgAAAABsKOqvZnn4cOMuQX0xtG3bSkePVti+RjT0gRrUoAY1qEENalCDGtSIthpNLSmpjd/l\nzMxFgMvljIka0dAHalCDGtSgBjWoQQ1qUCPaakQLwhwAAAAA2BBhDgAAAABsiDAHAAAAADZEmAMA\nAAAAGyLMAQAAAIANEeYAAAAAwIYIcwAAAABgQwHDXFVVle666y59+9vfVlZWlp577jlJ0rFjx5Sb\nm6shQ4YoNzdXx48f97VZsmSJMjIyNHToUBUWFvqW7969W9nZ2crIyNCcOXNkGEYENgkAAAAAYp8r\n0APcbreWL1+uhIQE1dTU6O6771ZaWprWrl2rAQMGaOzYsVq6dKmWLl2qRx99VPv27VN+fr7y8/Pl\n9XqVm5urt956S06nUzNnztTs2bOVmpqqBx98UBs3btSgQYOaYjsBADbWasG80BomtFCr8qoLFldM\nnhaw6bx5s7Rp0z+UlNRev//9q/XW7d79ofLzV+vnP3+83vK0tH7q0uXrkiSPx6Onn14oSdq8ebPm\n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\niuNYs7Ozroy7uztdXFxoZGRE09PT37l5t0j/3dPTk9bW1vT5+alut6upqSlNTEy4nkcvPD8/a2lp\nSafOQocAAAHASURBVNKvn5/V6/UfXVO1sbGhlZUVvb+/a3h4WPv7++6MTqej29tb7ezsuB8rSdVq\nVZOTk5qZmVEURapUKpqbm3PnxHGst7c3RVGkra2toJu5ZPVqYWFBzWZTrVZLQ0NDOjo6cmcMDg4q\nSRK9vLxocXFRlUpFp6enroyTkxOlafq9uapWq7mvcVbGzc2NHh4eVCqVVC6Xtb297R6L93OWldFu\nt3V/fy9JKpfLf+xKVkaj0dD6+rrq9br6+vp0cHCQ+62lNZarq6vgLx6yMpIk0d7enj4+PtTf3/+j\nsXQ6HZ2fn0uSarWaGo1GboY1d3m6amWkaRrcVStjd3c3uKtWRqvVCu5qL+ZyK+Py8jK4q1ZGaFfz\nxhHaUyvD01Mr4/HxMbin1to4NjYW3FEr4/r6OrijVkatVgvuqJURx3FwR3uxV7AyVldXgztqZaRp\nGjyf5o0ltKdWxsDAQHBPrYyzszPXfJrFu+5n8fTUkiSJa93Pcnh46Fr3/3el7k8vyAAAAAAA/DX8\nzBIAAAAACojDHAAAAAAUEIc5AAAAACggDnMAAAAAUEAc5gAAAACggDjMAQAAAEABcZgDAAAAgAL6\nAh0CVr2GWmAbAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fb419a4c240>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Y = np.arange(len(l2_test[0]))\n",
"plt.figure(figsize=(15, 7))\n",
"plt.bar(Y, l2_test[0], align='center', alpha = 0.5, label = '1/ 58', color = 'red')\n",
"plt.bar(Y, l2_test[1], align='center', alpha = 0.5, label = '2 / 58', color = 'green')\n",
"plt.bar(Y, l2_test[-2], align='center', alpha = 0.5, label = '55 / 58', color = 'blue')\n",
"plt.bar(Y, l2_test[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n",
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n",
"plt.legend(loc = 'best')\n",
"plt.title('Hist with bad files. Girls')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"bad_files = [4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18, 22, 24, 25, 27, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40]"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n",
"l2_test = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n",
"l2_test = np.sqrt(l2_test) * 100"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "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\n5eXl6cKFC67gPnr0qNq2bStJuv7663X27FnX+OPHj9eqviQ5nU5ZluXq7ejRo4qNjVVJSYnGjBmj\n559/XnFxcfL399eTTz6pSz8QGBYWpqNHj7rqHDlypNaPXZnw8HAFBARo69atlV65HxoaqlmzZkmS\nduzYodTUVEVFRbm9Qj46Olrr1q3T6NGja3WKvLptVtdegNriSBvQxc8rT5w4oSZNmujGG2+UJDVp\n0kQhISFq0qRJhQuPLnf99dfr1ltv1e9//3vX59eRkZF69913qwzt5s2b6+TJkzp9+nSN+uvcubOu\nu+46LVmyRKWlpcrOztb69etdn0//6Ec/0tq1a3X27FkdOHCgwpFeixYtql0HSTpx4oTeeustlZaW\n6qOPPtKXX36p3r17q6SkRCUlJQoJCZGfn582btyojz/+2LVcv3799MEHH2j//v06e/asXn311Rqt\nkzthYWHq1auX5s2bp6KiIl24cEEHDx7Utm3bJF08LZ+XlydJuummm2Sz2WoUwsOHD9c333yj8ePH\n6+DBg7IsS0VFRdq3b1+de61rL0BtsVcBkjZt2qTExERFRkZq9uzZWrBgga677jpdf/31GjlypB5+\n+GF1795de/bsqXT5qKgolZWVqXPnzpIunjIvLi6uMrTbt2+vxMRE3Xvvverevbvb09wBAQH67W9/\nq6ysLN1xxx2aPn265s+fr/bt20uS67Ponj176he/+IWSkpKuWH706NGaOHGiunfvXuXV4507d9aB\nAwd0xx13aOHChXr55ZcVHBysoKAgPffccxo7dqyioqK0evVqxcbGupbr3bu3Hn30UT366KOKj4/X\nHXfcUe261Mb8+fNVWlqqhIQERUVFacyYMa5T25988okGDx6syMhIjRo1SpMnT1br1q0lXbxxzp/+\n9KdKa4aEhOi9995T06ZN9ZOf/ETdunVTSkqKiouLNW3atDr1WV0vgDfZrEvnuAAAQIPGkTYAAIYg\ntAEAMAShDQCAIQhtAAAMQWgDAGCIBn9zlWPHavY9Vm8KDg5UYeGZBl/TV3VN6tVXdemVXn1Vl17N\nquurXqsTGnpDlfM40q6En5/diJq+qmtSr76qS6/06qu69GpWXV/1WleENgAAhiC0AQAwBKENAIAh\nCG0AAAxBaAMAYAhCGwAAQxDaAAAYosHfXKWhmjNnujZv/ruCg4P1u9/94Yp5e/d+ooyMVfrFL567\nYnpMTA+1a3ezJMnhcOj55xdIknbs2KbXXntJFy5Yuv766zV58jR973v8Fi8A4EqNIrQD58/xbsFf\nzXU7JCEhSYMGDdGsWVMqzMvO3qzbb4+uML1p06Z6883lFaa/8MI8zZv3a7Vt+wOtXPm+li17Q5Mn\nT6tT6wCAxovT43XUtWs33XjjjZXO27Fjm7p3v73GtWw2qbi4WJJUXFykFi1CvdIjAKBxaRRH2g3J\nyZMn5efnp6CgoArzSkpK9Nhjj8jPz19Dhw5XTMzdkqSJE3+p8eN/pqZNm6pZs2ZatOj/1XPXAAAT\nENpetm3bVvXocUel81as+LNCQ8P09deH9bOfjVL79jerVavv6b33lutXv3pJt9xyq5Yvf0uvvLJA\nEyf+sp47BwA0dIS2l2Vnf6whQx6pdF5oaJgkqVWr7yky8jZ98cVnCgxspv37v9Att9wqSYqN7aNn\nn3263voFAG+q0TVGzZoqsPh8tUPOTJjkpY4aFz7T9iLLsrR//35FRHSsMO/UqVMqKSmRdPEU+ief\n/ENt27bTDTfcoOLiIh08eECStGPHVrVp07Y+2wYAGIIj7TqaOnWS9uzZqZMnT+r++xP0+OMjdPPN\nHdShQ0fZbLYK47/88ktNnvycbLYmsqwLGjr0Uf3gB+0kSRMmPKfnnpsgm62JbrjhBqWlVbwiHQCA\nRhHa3j6N0qwGY6ZPr3gK6M03l1T6VS9J6tatm956671K5/XufY96976nNi0CwDVl/jb3p92bNWuq\n4mpOu0/oYf4p90YR2g3F8OH/e7VbAAA0YnymDQCAIQhtAAAMcc2dHudzEQCAqa650AYA+M7sgE1u\nxwTITyUBZdWOecZbDTUybk+PHz16VMOGDVNCQoISExO1bNkySdIrr7yiu+66S8nJyUpOTtbGjRtd\nyyxatEjx8fHq27evNm367wbcu3evkpKSFB8fr1mzZsmyLB+sEgAAjZPbI2273a6JEyfqlltuUVFR\nkQYNGqRevXpJkoYPH67HH3/8ivH79+9XRkaGMjIy5HQ6lZqaqr/+9a+y2+2aNm2aZs6cqS5duuiJ\nJ55QVlaWevfu7Zs18yGnM0+zZk1VYeEJSTbdd9/9evDBhysde/z4cc2ePVVvv/3WFdMfeCBJgYGB\natLELrvdrjfe+J0k6V//+ly/+tVclZSUyG636+c//4V+/ONbfb1KAAADuA3tsLAwhYVdvP1mUFCQ\n2rVrJ6fTWeX4zMxMJSYmKiAgQK1bt1abNm2Uk5OjVq1aqaioSF27dpUkpaSkKDMz0yuhXZPPqS/5\n+Gv3p276dLi32vl2u59Gj35GHTv+UGfOFOuxx4YpKup2181SLpedvVk9elT+3e2XX16k73znO1dM\ne+21l5Wa+oSio3tpy5a/67XXXtarry522zMAoPGr1dXjhw8f1r59+9SlSxdJ0ttvv62kpCSlpaXp\n1KlTkiSn06nw8HDXMg6HQ06ns8L08PDwasO/IWvRooU6dvyhJCkwsJnatm2r48fzKx2bnb1Fd9zR\ns8a1bTabzpy5+DOdRUX8TCcA4L9qfCFacXGxxowZo0mTJikoKEgPP/ywnnzySdlsNr300kuaN2+e\n5s6d6/UGg4MD5ednr3ZMs2ZNa1wvIKBmq1xdzdDQG1z/Pnz4sL788l+KiYmu8HOc5eXlOnLkkHr0\n6FJhObu9iZ59drTsdruGDBmiIUOGSJKmTZuixx9/XK+//rIuXLigd99994rl3PXjLb6oaVpdeqVX\nX9VtzL0G+NfsNdbduG8/bk1f52v62l0bvtpedVGjZ7e0tFRjxoxRUlKS+vTpI+ni0eYlgwcP1siR\nIyVdPLLOy8tzzXM6nXI4HBWm5+XlyeFwuH3swsIzbsdU9/Wsbyspqf6KxZrUPHbstCTpzJkzGj36\nKY0e/YzOnrV09uzpK8Z98sk/1KHDj3Ts2GmFht7gWk6SXn31/xQaGqbCwhMaO/YphYSEq2vXblq6\ndJmeemqs7r47TpmZazV+/ES99NJrVfby7bre4IuaptVt7L1646uPUu2//mjS8+qruo2915JS96+x\nAf5+bsd9+3Fr8jrvbp+ty/Pjq+3l7jGr4vb0uGVZmjx5stq1a6fU1FTX9Pz8/54OXrdunSIiIiRJ\nsbGxysjIUElJiQ4dOqTc3Fx17txZYWFhCgoK0p49e2RZltLT0xUXF+fJel1VZWVleu65CerTp596\n946tdMzWrZt1++2Vnxq/9DOdwcEhiom5W59++k9J0kcfrXbVi429V/v2/dMH3QMATOT2SHvnzp1a\ntWqVOnTooOTkZEnSuHHjtHr1an322WeSpFatWmnGjBmSpIiICPXv318JCQmy2+2aMmWK7PaLp7en\nTp2qtLQ0nTt3TjExMYqJifHVevmUZVmaO3eG2rT5gR56aGiV43bu3K5HHvmfCtPPnj0ry7qgwMBm\n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\n+uijWp8pqaxmbm6uoqKiJEm9evXSmjVrat1rVds+MzNTKSkpkqSUlBStW7fO45rt27dXu3btat2j\nu7pBQUGuMWfPnq3VPlZVTU/3g6rq2mw2FRcXS5JOnz6tsLAwr9T1ZF+o6u/U0+2Vl5enDRs26IEH\nHnBN87RmVXXvvPNO+fld/PJS165dr7h/hyd1Pdm3qqopSXPnztX48eO9/npYF4T2f5h6i9XDhw9r\n37596tKli1fqlZeXKzk5WT179lTPnj29VveSjIwMr35UkJubqx07dmjw4MEaOnRorU9furNjxw41\nb95cbdu29bhWRESE643gX/7yFx09etSjepdv+4KCAleghIaGqqCgwOOa3vTtugsWLFDv3r315z//\nWT/72c88runN/eDyupMmTdL8+fPVu3dvPf/88xo3bpxX6nq6L/ji73TOnDkaP368mjTxbiy4q/vH\nP/5RMTExXqvryb5VWc1169YpLCxMP/zhD2vdoy8Q2gYrLi7WmDFjNGnSpCveYXrCbrdr1apV2rhx\no3JycvTFF194pa4klZSUaP369erXr5/XapaXl+vUqVP6wx/+oAkTJmjs2LGyvPgtxtWrV3vtTcbs\n2bO1fPlyDRw4UMXFxa6jwrqobtvbbLY6HRH4Yn+qqu4zzzyjjRs3KikpSW+//bbHNb21H3y77jvv\nvKO0tDRt3LhRaWlpmjx5cq1rVlbX033B23+nf/vb3xQSEqJbb73Vozq1rfv666/Lbrfrvvvu81rd\nuu5bldU8e/asFi1aVOc3lr5AaP+HabdYLS0t1ZgxY5SUlKQ+ffp4vf6NN96o22+/XZs2bfJazays\nLN1yyy1q0aKF12o6HA7Fx8fLZrOpc+fOatKkiQoLC71Su6ysTGvXrlVCQoJX6rVv315Lly7VypUr\nlZiYqNatW9epTmXbvnnz5srPz5ck5efnKyQkxOOa3uCublJSUq0/Jqispjf2g8rqfvDBB65/9+/f\nv05H8JXV9da+4K2/0127dmn9+vWKjY3VuHHjtHXrVj377LMe1XRXd+XKldqwYYNeeOGFWr/JrEm/\ntd23Kqs5YcIEHT582HVBal5engYOHKhjx47Vql9vIrT/w6RbrFqWpcmTJ6tdu3ZKTU31Wt0TJ064\nruI8d+6cNm/e7PHnWZfLyMhQYmKi1+pJ0r333qvs7GxJ0ldffaXS0lIFBwd7pfal9b/8YxNPXDpl\nfeHCBb3++ut66KGHal2jqm0fGxur9PR0SRd/iCcuLs7jmp6qqm5ubq7r35mZmbXax6qq6el+UFXd\nsLAwbdu2TZK0devWWn9MUlVdT/YFX/yd/vznP1dWVpbWr1+vF198UXfccYdeeOEFj2pWVzcrK0tL\nlizR66+/ruuvv95rdT3Ztyqr+corr2jLli1av3691q9fr/DwcK1cuVKhoaG17tlb6vU2pg2Zr26x\nOm7cOG3btk2FhYWKiYnR008/rcGDB3tUc+fOnVq1apU6dOjg+irSuHHj1Lt3b4/q5ufna+LEiSov\nL5dlWerXr5/uuecej2pecubMGW3evFkzZsyoc43KnstBgwZp0qRJGjBggPz9/TVv3rxav2uvaht9\n+OGHdX6TUVnNM2fOaPny5ZKk+Ph4DRo0qNZ1q9r2I0aM0NixY7VixQq1bNlSCxcu9LhmSUmJZs6c\nqRMnTuinP/2pfvSjH+mNN97wuO6KFSv01VdfyWazqVWrVpo+fbrHNT3dD6qqO3PmTM2ZM0dlZWVq\n2rRprfffqurm5ubWeV+o6u907dq1Hm2vyviipiTNnDlTJSUlrjcyXbp08ei14ZJf//rXdd63TMFt\nTAEAMASnxwEAMAShDQCAIQhtAAAMQWgDAGAIQhsAAEMQ2gAAGILQBgDAEIQ2AACG+P8m2WvJpBRY\nqQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fb419afe278>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Y = np.arange(len(l2_test[0]))\n",
"plt.bar(Y, l2_test[0], align='center', alpha = 0.5, label = '1/ 58', color = 'red')\n",
"plt.bar(Y, l2_test[1], align='center', alpha = 0.5, label = '2 / 58', color = 'green')\n",
"plt.bar(Y, l2_test[-2], align='center', alpha = 0.5, label = '55 / 58', color = 'blue')\n",
"plt.bar(Y, l2_test[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n",
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n",
"plt.legend(loc = 'best')\n",
"plt.title('Hist without bad files. Girls')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 2091.18669258, 2144.79620931, 2091.1993577 , 2124.40744173,\n",
" 1993.18983629, 1683.50536593, 1120.81811274, 953.10788307,\n",
" 264.94996699, 238.5262924 , 273.91694326])"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"l2_test = np.mean(l2_test, axis = 1)\n",
"l2_test"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA4EAAAG5CAYAAAAwHDElAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4lPW9///nPftMZjKTZbKQhD3ggkAQVBThC1atCkK1\ntrY9dvtVT63Vtvacb0Xrhp5up7VW29Nq7eL36unpJsVW7HVUCuKOIAgoyBrMviczyWRmsty/PyYM\nIItBycwkeT2uKxeZ+5657/fgxyGvfDbDNE0TERERERERGRUs6S5AREREREREUkchUEREREREZBRR\nCBQRERERERlFFAJFRERERERGEYVAERERERGRUUQhUEREREREZBRRCBQRkSG3aNEiXn755ZTd7667\n7uJnP/tZyu43HLz22mvMnz//lD9XRESGH4VAERFJqb/+9a9cddVVzJo1i/nz5/ODH/yA3t7eD3y9\nlStX8qlPfeqIYytWrOCmm276UHVOnTqVAwcOfKhrADz88MP827/924e+zmCtXLmSqVOn8vTTT6fs\nniIiMrwoBIqISEp1d3dz++238+qrr/LnP/+ZV199lV//+tfHfO6HCYej1V//+lcCgQCrVq1Kdyki\nIpKhFAJFRCSlPv3pTzN79mwcDgeFhYUsWbKEN954I3l+0aJFPProoyxZsoSZM2fS29vLo48+ykc+\n8hEqKiq4/PLLefbZZwHYu3cvd999N1u2bKGiooLZs2cDcNttt/HjH/84ec0//elPXHzxxZxzzjl8\n+ctfpqGh4YQ1fuYznwFg6dKlVFRUJHvV1q5dy9KlS5k9ezbXXnstO3fuTL7m0Ucf5cILL6SiooJL\nL72UV155hfXr1/PII4/wj3/8g4qKCq688sqj7vXoo49yyy23HHHs/vvv5/777wcSPXsXXXQRFRUV\nLFq0iL/97W/HrbumpobXX3+dFStW8OKLL9LU1HTc5y5atIhHHnmEyy+/nDlz5rB8+XJisdgRz/n1\nr3/N3LlzmTdvHk888UTy+Lp161i2bBmzZs1iwYIFPPzww8e9j4iIZCBTRERkiC1cuNB86aWXjnnu\nxhtvNP/zP//ziOdeeeWVZm1trdnd3W2apmk+/fTTZn19vdnX12euXr3anDFjhtnQ0GCapmk+8cQT\n5rXXXnvENb/1rW+ZDzzwgGmapvnyyy+b55xzjrl9+3YzFouZK1asMD/96U+/b81TpkwxKysrk4/f\neust87zzzjO3bNli9vb2mitXrjQXLlxoxmIxc+/eveb8+fPN+vp60zRNs6qqyjxw4IBpmqb50EMP\nmd/85jePe5/q6mpz+vTpZjgcNk3TNHt7e80LLrjA3Lx5s9nV1WVWVFSYe/fuNU3TNBsaGsxdu3Yd\n91o//elPzauvvto0TdNcvHix+atf/Sp57tVXXzUvvPDC5OOFCxeaV1xxhVlbW2u2tbWZn/zkJ5N/\nZ6+++qp5+umnmw8++KAZj8fNdevWmdOnTzfb29uT53fu3Gn29fWZO3bsMOfOnWs+++yz7/t3KiIi\nmUE9gSIikjZ/+ctf2L59O1/84hePOH7ddddRXFyMy+UC4LLLLqOwsBCLxcLll1/OuHHj2Lp166Du\n8fe//52rr76aM888E4fDwa233sqWLVuorq4+qVr/+Mc/8slPfpIZM2ZgtVr52Mc+ht1uZ8uWLVit\nVuLxOHv37qWnp4fS0lLGjh07qOuWlJRwxhln8NxzzwHw6quv4nK5mDlzJgAWi4Xdu3cTjUYpKCig\nvLz8uNd68sknWbx4MQCLFy9+3yGhn/nMZyguLiYQCHDjjTeyevXq5DmbzcZNN92E3W5nwYIFeDwe\n9u/fD8C5557L1KlTsVgsnHbaaVxxxRVs2LBhUO9XRETSTyFQRETS4rnnnuOBBx7gl7/8Jbm5uUec\nKy4uPuLxqlWrksMwZ8+eze7du2lraxvUfRobGykpKUk+zsrKIhAIvO+Q0Peqra3lN7/5TbKG2bNn\nU19fT2NjI+PGjeP222/n4Ycf5vzzz+cb3/jGSV1/8eLFPPXUUwA89dRTySDn8Xj48Y9/zB/+8Afm\nzZvHDTfcwN69e495jU2bNlFdXc0VV1yRvOauXbvYsWPHce97+N/zmDFjaGxsTD4OBALYbLbkY7fb\nTSQSAeDNN9/kuuuu47zzzuPss8/mD3/4w6D/e4iISPopBIqISMqtX7+eb3/72/ziF79g6tSpR503\nDCP5fU1NDd/+9re58847ee2119i4ceMRvWGHP/dYCgoKqKmpST6ORCK0t7dTWFh4UjUXFxfz5S9/\nmY0bNya/3nzzzWRgW7JkCf/zP//D2rVrMQyDH/7wh4OqDxI9nRs2bKC+vp5nn32WJUuWJM9deOGF\n/OY3v+HFF19k4sSJ3Hnnnce8xqpVqzBNk2XLlnHBBRfwiU98AkgsFHM8dXV1ye9ra2spKCh4/78I\n4Jvf/CYXXXQRzz//PJs2beLaa6/FNM1BvVZERNJPIVBERFLqlVde4d///d95+OGHmT59+vs+v7u7\nG8Mwkr2FTzzxBLt3706ez8vLo6GhgXg8fszXL168mJUrV7Jjxw7i8TgPPPAA06dPp7S09IT3zc/P\np6qqKvn4mmuu4Q9/+ANvvvkmpmkSiURYt24dnZ2d7Nu3j1deeYV4PI7D4cDpdGKxWJL11dTU0N/f\nf9x75ebmcs4557B8+XJKS0uZNGkSAM3NzTz33HNEIhEcDgcejyd53cPFYjH+8Y9/sGLFClatWpX8\nuvPOO3nqqaeOu8rq73//e+rr62lvb+cXv/gFl19++Qn/Tg7q6urC7/fjdDrZunVrshdTRESGB4VA\nERFJqf/6r/8iHA5zww03UFFRQUVFBV/60peO+/zJkyfzxS9+kWuvvZbzzz+fXbt2MWvWrOT58847\nj8mTJzNv3jzOPffco15//vnn87WvfY2bb76ZefPmUVVVdcTKocfz1a9+ldtuu43Zs2fz9NNPc9ZZ\nZ3HfffexYsUK5syZwyWXXMLKlSsBiMfj/OhHP+Lcc89l3rx5tLa2cuuttwLw0Y9+FEjMo/vYxz52\n3PstXryYl19+OdmzCNDf389vf/tbLrzwQs455xxef/117rnnnqNe+9xzz+FyuVi2bBnBYDD5dfXV\nV9PX18cLL7xw3Ht+8Ytf5CMf+Qhjx47lxhtvfN+/F4C7776bhx56iIqKCn72s59x2WWXDep1IiKS\nGQxT4zdERERGnUWLFnH//fdz/vnnp7sUERFJMfUEioiIiIiIjCK293+KiIjIyLNx40auv/76Y57b\nvHlziqsRERFJHQ0HFRERERERGUU0HFRERERERGQUGbHDQZuawkN6/ZwcD21tkSG9hwiorUnqqK1J\nqqitSaqorUmqZGpbCwZ9xzyunsAPyGazprsEGSXU1iRV1NYkVdTWJFXU1iRVhltbUwgUEREREREZ\nRRQCRURERERERhGFQBERERERkVFEIVBERERERGQUUQgUEREREREZRRQCRURERERERhGFQBERERER\nkVFEIVBERERERGQUUQgUEREREREZRRQCRUREREQkraqbOln7RjV/e3E/a9+oprqp80Nf8+KLLwRg\n9+53+Nd//QL/8i+f4HOfu5Y1a5456WutX7+O/fv3JR8/9tgveP311076On/60++JRqMn/bpj1fBh\n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\nOVgwYwzlZQEisV5e2FrH25Wt9Pdr0RgRkVNBIVBEREQyjsVicOb4XOadVYzbaWNXVTvr36wlFImn\nuzQRkWFPIVBEREQyVp7fxcKKEsYV+mjvjPH85hr21nZoKwkRkQ9BIVBEREQymt1moWJKkHPPKMRm\ntbBtbwsvb6+nO9ab7tJERIYlhUAREREZForzslg4q4SiXA9N7d38841qqhs7012WiMiwoxAoIiIi\nw4bLYePcMwqZWZ6PacLGdxrZuLOReI82mBcRGSxbugsQERERORmGYTC+KJt8v5s3djVR3dRJSyhK\nxZQgBQF3ussTEcl46gkUERGRYcnrtjNvejGnj8shFu/j5W11bN3bQm+fNpgXETkRhUAREREZtiyG\nwdSxOVw4Yww+j4N9tR08v6WW9s5YuksTEclYCoEiIiIy7OX4nCyYOYaJY/yEI3HWb6llV1U7/dpK\nQkTkKAqBIiIiMiLYrBamT8rj/GlFOOxW3q5s5cWtdXR296S7NBGRjKIQKCIiIiNKQY6HRbNKKA16\naQ1FWbe5hsr6kDaYFxEZcFIhMBKJEIlEhqoWERERkVPCYbcy+7QCZk8twDBgy+5mXnu7gWhcG8yL\niAwqBL777rt84hOf4Nxzz+W8887j2muvpaqqaqhrExEREflQSgu8LKwoJRhwU98aYe3mGupautJd\nlohIWg0qBN5999184hOfYOvWrbz55ptcc8013HXXXSd8zfLly5k7dy6LFy9OHvv+97/PRz/6UZYs\nWcJNN91EKBQCoLq6munTp7N06VKWLl16xLW3b9/OkiVLuPjii7n//vs1lENEREROisdl4/xpRZw1\nMY/e3n5ee7uBzbub6OnVVhIiMjoNKgS2trby8Y9/HMMwMAyDq6++mtbW1hO+5qqrruKxxx474tgF\nF1zAU089xd///nfGjx/PI488kjw3duxYnnzySZ588klWrFiRPH7PPfdw33338cwzz1BZWcn69etP\n5v2JiIiIYBgGk0r8LKgoIeB1cqA+zLrNNbR0RNNdmohIyg0qBFosFvbt25d8vH//fqxW6wlfM2fO\nHPx+/xHH5s2bh81mA2DmzJnU19ef8BqNjY10dnYyc+ZMDMNg2bJlrFmzZjAli4iIiBwl2+Ng/owx\nTCkLEIn18uK2Ot6ubKW/XyONRGT0sA3mSd/4xjf4zGc+w+mnnw7Azp07+cEPfvChbvzEE09w2WWX\n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\nD2jbtm36gz/4AwWDwYXHp6am9Mgjj6itrU333XefRkdHJUmHDh3S7/7u7+q3f/u3tW3bNj33u2Zp\nhwAAAhVJREFU3HOZeksAgAJGCQQA4BJ6enoUCoV022236Z577tGLL754wfPeeecdPfroo/r3f/93\nffazn9V3v/vdhcfee+89/dmf/Zk6Ozu1atUqPf/885KkhoYGPffcc3rppZf0L//yL3rhhRd05MiR\njLwvAEDhogQCAHAJe/bs0d133y3DMHTnnXequ7v7nFW+M26++WatWLFCknTvvffql7/85cJjN910\nk5YsWSJJWr9+vY4fPy5Jmp2d1Te/+U21t7drx44dGhkZUU9PTwbeFQCgkDntDgAAQLaKxWJ65ZVX\n5Ha79fLLL0uS4vG49u7d+4mep6ioaOFjh8OhZDIpSfqrv/or1dTU6Omnn5bT6dQf/dEfaW5u7uq9\nAQAALoCVQAAALqKrq0vLly/XG2+8oddee02vvfaa/v7v/14vvfTSeee+++676uvrkzR/D+Ftt912\n2eePRCKqq6uT0+nURx99pAMHDlzttwAAwHlYCQQA4CJefPFFtbe3n3PsxhtvVCqV0ttvv63rr79+\n4fhNN92k73//++rv71d1dbV++MMfXvb5//iP/1iPPvqo9uzZo+XLl+vWW2+96u8BAIDfZFiWZdkd\nAgCAXLZ37169/vrr+uu//mu7owAAcFlcDgoAAAAABYSVQAAAAAAoIKwEAgAAAEABoQQCAAAAQAGh\nBAIAAABAAaEEAgAAAEABoQQCAAAAQAH5/9fc8hGLBCEwAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fb419c6c5f8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x = np.array(enc_dims) / 58.\n",
"plt.figure(figsize=(15, 7))\n",
"\n",
"y = np.array(l2_test)\n",
"plt.plot(x, y, marker='o', alpha = 0.5, label = \"l2ratio_test\")\n",
"\n",
"plt.title(\"l2ratio_test vs Alpha\")\n",
"plt.xlabel(\"Alpha\")\n",
"plt.ylabel(\"l2ratio\")\n",
"plt.legend(loc = 'best')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Петр"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Model"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"SAMPLES_COUNT_DEFAULT = 1000"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def predict(eeg_data_batch, autoencoder):\n",
" batch_mean = eeg_data_batch.mean(axis=2)\n",
" batch_std = eeg_data_batch.std(axis=2)\n",
" for i in range(batch_std.shape[0]):\n",
" for j in range(batch_std.shape[1]):\n",
" if (batch_std[i][j] == 0):\n",
" batch_std[i][j] = 1\n",
" \n",
" eeg_data_batch_norm = (eeg_data_batch - batch_mean.reshape(\n",
" eeg_data_batch.shape[0], eeg_data_batch.shape[1], 1\n",
" )) / batch_std.reshape(eeg_data_batch.shape[0], eeg_data_batch.shape[1], 1)\n",
" \n",
" eeg_data_batch_norm = torch.autograd.Variable(torch.FloatTensor(eeg_data_batch_norm)).cuda()\n",
" samples_len = eeg_data_batch_norm.size(2)\n",
" centered_samples_pos = samples_len // 2\n",
" centered_samples_from_batch = eeg_data_batch_norm[:, :, centered_samples_pos]\n",
" \n",
" autoencoded_batch = autoencoder(centered_samples_from_batch)\n",
" \n",
" \n",
" numpy_val = autoencoded_batch.data.cpu().numpy()\n",
" numpy_val = numpy_val * batch_std + batch_mean\n",
" return numpy_val"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def make_batch(eeg_data_file, channels_count, batch_size, batch_start, samples_count=SAMPLES_COUNT_DEFAULT):\n",
" result = np.zeros((batch_size, channels_count, samples_count))\n",
" for i in range(batch_size):\n",
" eeg_data = eeg_data_file\n",
" result[i] = eeg_data[:, batch_start - samples_count // 2: batch_start+samples_count // 2]\n",
" batch_start += 1\n",
" return np.array(result)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import torch.nn.functional as F\n",
"class PlainEncoderEEG(torch.nn.Module):\n",
" def __init__(self, input_channels, target_channels):\n",
" super().__init__()\n",
" self.dense1 = torch.nn.Linear(input_channels, 100)\n",
" self.dense2 = torch.nn.Linear(100, 80)\n",
" self.dense3 = torch.nn.Linear(80, 50)\n",
" self.dense4 = torch.nn.Linear(50, 40)\n",
" self.dense5 = torch.nn.Linear(40, target_channels)\n",
" \n",
" def forward(self, x):\n",
" x = x.cuda()\n",
" x = F.tanh(self.dense1(x))\n",
" x = F.tanh(self.dense2(x))\n",
" x = F.tanh(self.dense3(x))\n",
" x = F.tanh(self.dense4(x))\n",
" x = F.tanh(self.dense5(x))\n",
" return x\n",
" \n",
"class PlainDecoderEEG(torch.nn.Module):\n",
" def __init__(self, input_channels, target_channels):\n",
" super().__init__()\n",
" self.dense1 = torch.nn.Linear(input_channels, 30)\n",
" self.dense2 = torch.nn.Linear(30, 40)\n",
" self.dense3 = torch.nn.Linear(40, 50)\n",
" self.dense4 = torch.nn.Linear(50, 70)\n",
" self.dense5 = torch.nn.Linear(70, target_channels)\n",
" \n",
" \n",
" def forward(self, x):\n",
" x = x.cuda()\n",
" x = F.tanh(self.dense1(x))\n",
" x = F.tanh(self.dense2(x))\n",
" x = F.tanh(self.dense3(x))\n",
" x = F.tanh(self.dense4(x))\n",
" x = self.dense5(x)\n",
" return x\n",
" \n",
"class PlainAutoencoderEEG(torch.nn.Module):\n",
" def __init__(self, input_channels, target_channels):\n",
" super().__init__()\n",
" self.encoder = PlainEncoderEEG(input_channels, target_channels)\n",
" self.decoder = PlainDecoderEEG(target_channels, input_channels)\n",
" \n",
" def forward(self, x):\n",
" x = x.cuda()\n",
" x = self.encoder(x)\n",
" x = self.decoder(x)\n",
" return x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### L2Ratio on Train"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Load_data"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import torch\n",
"import mne\n",
"import pathlib\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import h5py\n",
"\n",
"SAMPLES_COUNT_DEFAULT = 1000"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def read_eeg_file(file_path):\n",
" h5_file = h5py.File(file_path, 'r')\n",
" a_group_key = list(h5_file.keys())[0]\n",
" raw = np.array(h5_file[a_group_key])\n",
" return raw"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def find_bad_channels(part_data):\n",
" res = []\n",
" for i in range(part_data.shape[0]):\n",
" if (np.array_equal(part_data[i], np.zeros(part_data.shape[1]))):\n",
" res.append(i)\n",
" return res"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from typing import List\n",
"def pad_all_eeg_files(eeg_files, samples_count=SAMPLES_COUNT_DEFAULT) -> List[np.array]:\n",
" half_samples_count = samples_count // 2\n",
" result = []\n",
" for eeg_file in eeg_files:\n",
" eeg_data = eeg_file\n",
" eeg_data_padded = np.pad(eeg_data,\n",
" pad_width=[(0, 0), (half_samples_count, half_samples_count)],\n",
" mode='mean', stat_length=samples_count)\n",
" result.append(eeg_data_padded)\n",
" return result"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load Train data"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"DATA_FOLDER = pathlib.Path('/home/radi4/data/data/train')\n",
"all_files_data = []\n",
"all_files_names = []\n",
"bad_channels = []\n",
"for eeg_file_path in DATA_FOLDER.glob('*.h5'):\n",
" all_files_names.append(str(eeg_file_path))\n",
" all_files_data.append(read_eeg_file(str(eeg_file_path)))\n",
" bad_channels.append(find_bad_channels(all_files_data[-1]).copy())\n",
"channels_count = all_files_data[0].shape[0]\n",
"all_padded_data = pad_all_eeg_files(all_files_data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Подсчет Loss L2Ratio on Train"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"enc_dims = [1, 2, 6, 29, 58]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"l2_loss_by_files = []\n",
"for enc_dim in enc_dims:\n",
" autoencoder = torch.load(\"./Petr/Petr_dense_{}.pt\".format(str(enc_dim)))\n",
" autoencoder = autoencoder.cuda()\n",
" adds = []\n",
" for i in range(len(all_files_data)):\n",
" start = 0\n",
" res = np.zeros((0, 58))\n",
" while (start < all_files_data[i].shape[1]):\n",
" size = min(500, all_files_data[i].shape[1] - start)\n",
" batch = make_batch(all_padded_data[i], channels_count, size, start + SAMPLES_COUNT_DEFAULT // 2)\n",
" start += size\n",
" res = np.concatenate([res, predict(batch, autoencoder)], axis = 0)\n",
" res = res.T\n",
" add = np.sum((np.delete(res, bad_channels[i]) - np.delete(all_files_data[i], bad_channels[i]))**2)\n",
" print(i, add, all_files_names[i])\n",
" adds.append(add)\n",
" \n",
" l2_loss_by_files.append(adds.copy()) \n",
" print(enc_dim)"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"bad_files = []"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n",
"l2_train = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n",
"l2_train = np.sqrt(l2_train) * 100"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "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\nf4MzLzb2x/r00/9nynwphwAAAABgMsMwtGjRXIWE/FD33/9go+P27t2tsLDwesu//fZb53WF3377\nrXbv3qk+ffpKkm64IUD79u11rn/jjcGmzJnTSgEAAABc85p69ISrAgK8dfx4ZZPjiov/po0b31Pf\nvj9SRsZPJUlPPDFBkZHRzjHl5eXy8PBQ166e9dY/efKEZsyYIqnuukS7Pd5505qpU5/Tyy8vUW1t\nrTw8PDR16kwz3hrlEAAAAADMNmjQYBUV7bnimF27digsbGiDr/XqdaNWr/5jo9m/+92bLZ7jv6Mc\nAgAAAEAbiI9PaOspXIZrDgEAAAAAlEMAAAAAAOUQAAAAACDKIQAAAABAlEMAAAAAgLhbKQAAAIBO\nYPFiD1NyPD2lqioPTZ1a3eTYhQvnaPv2Ivn7++uNN9Y0Ou6bb77RggWzlZ39inOZw1Gq+fNnq7z8\npCSL7rknVffe+4AZb6FRHDkEAAAAgFaQkJCkX/96eZPjdu7crvDwyMuWubtb9dRTz+jNN3O1cuXv\n9e67ufrXv/7ZWlOVRDkEAAAAgFYxePAd8vHxaXLczp07NHTosMuW3XDDDerf/2ZJUteunurdu7e+\n+aasVeZ5CeUQAAAAANpIbW2tvvrqS/3wh30aHXPs2FF98cXnuvXW21t1LpRDAAAAAGgjn3xyULfe\nelujr589e1YzZ07V008/K09Pr1adS5Pl8NixY3rooYeUkJCgxMRErV69WpK0fPly3XXXXUpOTlZy\ncrI+/PBD5zorVqyQ3W5XfHy8CgsLncsPHjyopKQk2e12zZ8/X4ZhSJKqq6uVlZUlu92u9PR0HTly\nxLlOXl6e4uLiFBcXp7y8POfyw4cPKz09XXa7XVlZWaqubvqCUAAAAABoTz7+eLsiIoY1+FpNTY2e\ne26q4uJGafjw2FafS5Pl0N3dXdOmTdN7772nt99+W2+99ZYOHTokScrIyND69eu1fv16DR8+XJJ0\n6NAh5efnKz8/X6tWrdKcOXNUW1srSXr++ec1b948bdq0SSUlJdq2bZskKTc3Vz4+Ptq8ebMyMjK0\nZMkSSdKpU6eUk5OjNWvWKDc3Vzk5OaqoqJAkLVmyRBkZGdq8ebN8fHy0du1a8z8dAAAAAGhFe/fu\nVlhYeL3lhmFo0aK5Cgn5oe6//8HvZS5NPsoiMDBQgYGBkiQvLy/16dNHDoej0fEFBQVKTEyUh4eH\n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\n8B+Gb26HqvvTKwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fb419522da0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Y = np.arange(len(l2_train[0]))\n",
"plt.figure(figsize=(15, 7))\n",
"plt.bar(Y, l2_train[0], align='center', alpha = 0.5, label = '1/ 58', color = 'red')\n",
"plt.bar(Y, l2_train[1], align='center', alpha = 0.5, label = '2 / 58', color = 'green')\n",
"plt.bar(Y, l2_train[-2], align='center', alpha = 0.5, label = '1 / 2', color = 'blue')\n",
"plt.bar(Y, l2_train[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n",
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n",
"plt.legend(loc = 'best')\n",
"plt.title('Hist with bad files. Petr')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"bad_files = [1, 10, 12, 13, 16, 17, 25, 26, 29, 30]"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n",
"l2_train = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n",
"l2_train = np.sqrt(l2_train) * 100"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAeYAAAFaCAYAAADLm/7BAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtYVXXe///XBkQFDwlyGMzRZNIcTaQkJU0T84gkkeZU\ndhvVkI5Knm8PZaOlpPVVsimTyG92dxyNwfuWmq8JKU6ah2K0mbLGGjVTQRFNAeW0fn/4c9+R7L3Z\nB3ABz8d1dV251trv9d6btfdrr89aey2LYRiGAACAKXhd6wYAAMD/IpgBADARghkAABMhmAEAMBGC\nGQAAEyGYAQAwEYIZTUZsbKx2795db+tbtGiRXn75ZZvzX3rpJc2ePbve+vm5jIwM3X///R6r161b\nNx05cqTGeadPn9aDDz6oyMhIPffcc3r11Ve1cOFCSdKxY8fUrVs3VVRUeKwXoKEjmNEoxMTEaOfO\nndWm/TJ8srKy1LdvX7t1PBkUS5Ys0ZQpUyRJu3fv1sCBA92uWVv2grK+vf/++2rXrp2++OILzZs3\nT5MmTdLSpUvrbf0ZGRnq3r27IiMjdcstt2jMmDH65JNPavXYmrYroK4RzADq1PHjxxUeHi6LxXLN\neujdu7fy8vK0b98+jR07VtOnT9e5c+fcrsuePuoCwYwm4+d7PwcOHFBCQoJuueUW3X777UpJSZEk\nTZgwQZIUFRWlyMhI5eXlVatx6dIl9erVS2fOnJEkrVmzRr/97W914cIFSVJqaqp1b3DevHlatWqV\nSkpK9Pvf/14FBQWKjIxUZGSk8vPzJUnl5eWaO3euIiMjFRsbqy+//NK6ru+++04PPfSQ+vTpo9jY\nWGVnZ1vnPfTQQ9qwYYP13z8fHXjwwQclSWPGjFFkZKQ+/PDDGl8PwzC0ZMkS3XrrrRoxYoR27dpl\nnffBBx9o5MiRioyM1JAhQ/Tee+9Ve2x6eroGDBigAQMGaOPGjTZf83nz5ikzM1Ovv/66IiMjtXPn\nTrtD+OfPn9eCBQs0YMAA3XHHHVq1apUqKyslSUeOHNGECRN06623qm/fvpo+fbrN9dri5eWle++9\nVxcvXtTRo0clSZ988onGjBmjPn366He/+50OHjwoSZozZ46OHz+uSZMmKTIyUq+99pp1RGXDhg26\n8847NXHiRKd7ABwhmNEkLV26VP/xH/+hL774Qh9//LFGjhwpSXrrrbckSXv37lVeXp4iIyOrPa55\n8+a6+eabtXfvXutyYWFh+vzzz63/vu2226o9xs/PT6+99pqCg4OVl5envLw8hYSESJJycnIUGxur\nffv2KSYmRs8884yky4E9adIk9e/fXzt37tSTTz6p2bNn6/vvv3f43N5++21J0qZNm5SXl6dRo0bV\nuNyBAwf061//Wp999pmSk5M1depUnT17VpIUGBiotWvX6osvvlBKSopSUlL0z3/+U5KUm5urdevW\nad26ddqyZUu1QP+l5557TnFxcXr00UeVl5en22+/3W7v8+bNk4+Pj7Zs2aLMzEx9+umn1i8gL774\novr376+9e/cqNzfX+iXKGRUVFdqwYYP8/PzUuXNnffXVV1qwYIGWLFmi3bt3a/z48frDH/6gsrIy\nPf/88woLC9Orr76qvLw8/f73v7fW2bt3rz788EO9/vrrTvcAOEIwo9GYMmWK+vTpY/1v8eLFNpf1\n8fHR0aNHdebMGfn7+6t37961Xk9UVJT27t2riooKffPNN3rooYe0d+9eXbp0SV9++aX69OlT61q3\n3nqrBg0aJG9vb40ZM8a6t7Z//36VlJQoKSlJvr6+io6O1uDBg5WVlVXr2o4EBARo4sSJatasmUaN\nGqUbbrhB27ZtkyTdeeed+vWvfy2LxaLbbrtN/fv31759+yRJH330kRISEtS1a1f5+flp6tSpHunn\n9OnT2r59uxYsWCA/Pz8FBgbq4Ycftj5nHx8fHT9+XAUFBWrevLlTr/P+/fvVp08f9e/fX1lZWXr5\n5ZfVunVrvf/++xo/frwiIiLk7e2te+65R82aNdPf//53u/WmTZsmPz8/tWjRwq3nDNTE51o3AHjK\nyy+/XG2PLCMjo9pw788tXbpUq1ev1siRI3X99ddr6tSpGjx4cK3Wc9tttyklJUVfffWVunbtqv79\n+2vhwoX6+9//rk6dOqldu3a17rl9+/bW/2/RooUuXbqkiooKFRQUKDQ0VF5e//vdOSwszDoE7gkh\nISHVjvuGhYWpoKBAkrR9+3a9/PLLOnz4sKqqqnTx4kV17dpVklRQUKCePXtaH9ehQweP9HP8+HFV\nVFRowIAB1mlVVVX61a9+Jeny0PKLL76osWPHqm3btkpMTNTYsWNrVTsiIkLvvvtujevMzMy0jpRI\nl0crrrwOtoSGhtZqvYArCGY0SZ07d9bKlStVVVWlLVu2KDk5Wbt3767VCUqRkZH697//rY8//lhR\n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\neFDjx49XXFycJk2apAsXLjisY+u9e/bsWSUmJmrYsGFKTEzUuXPnXK7l7N/QVp3ly5drxIgRiouL\n05QpU/TTTz+5XCs1NdX6fn7kkUdqdV0JR59ztd2ubNWZPn26dXuKiYnRmDFjXO7J2e3K1ueuq+8/\njzOaiIqKCmPIkCHG0aNHjUuXLhlxcXHGv/71L5dq5efnG//4xz8MwzCM8+fPG8OGDXO5VlVVlXHh\nwgXDMAyjrKzMGDt2rJGXl+dSLcMwjHXr1hkzZ840kpKSXK5hGIYxePBgo7Cw0K0aV8ydO9f485//\nbBiGYVy6dMk4d+6cW/UqKiqM22+/3Th27JhLjz958qQxePBgo7S01DAMw0hOTjY++OADp+t88803\nRmxsrFFSUmKUl5cbEydONA4fPlzrx+/Zs8f4xz/+YcTGxlqnHTp0yPjuu++MCRMmGAcOHHCrlmEY\nxvHjx41HHnnEuPPOO2v996yp1urVq4309PRa92OrTmJiorFt2zbDMAxj27ZtxoQJE1yulZCQYOze\nvdswDMPYsGGDsWrVKod1bL13ly9fbqxdu9YwDMNYu3atsWLFCpdrOfs3tFVnx44dRnl5uWEYhrFi\nxQq3ejp//rx1mfXr1xtPPfWUy7UMw7ntqjaflykpKcZLL73kck/Oble2Pnddff95WpPZY/bkZUKD\ng4PVo0cPSVKrVq3UpUsXl69sZrFY5O/vL0mqqKhQRUWFLBaLS7VOnjypbdu2aezYsS49vi6cP39e\ne/futfbk6+urNm3auFVz165d6tixozp06OByjcrKSl28eFEVFRW6ePGigoODna7x3XffqVevXmrZ\nsqV8fHwUFRWlLVu21PrxUVFRatu2bbVp4eHh6tKli9O91FRLklJSUjRnzhyntilbtTzRk8ViUXFx\nsaTL20ZtX/eaah0+fFhRUVGSpP79+9fqtbf13s3OzlZ8fLwkKT4+Xlu3bnW5lrN/Q1t1BgwYIB+f\nyz+c6d27d7VrQzhbq1WrVtZlSktLa7U92Pucc2a7cvR5aRiGPvrooxpHe2pby9ntytbnrqvvP0+r\nk59LmVFNlwmt7TCaPceOHdPXX3+tiIgIl2tUVlYqISFBR48e1QMPPOByrWXLlmnOnDnWDdRdiYmJ\n8vb21vjx4zV+/HiXahw7dkwBAQGaP3++Dh48qB49emjhwoXy8/Nzua+srKxavYltCQkJ0SOPPKLB\ngwerefPm6t+/vwYMGOB0na5duyo1NVVFRUVq0aKFcnNz1bNnT5f78rStW7cqODhYN910k0fqvfXW\nW8rMzFTPnj01b948l8J7wYIFevTRR7V8+XJVVVXpvffec7mfG2+8UdnZ2brrrrv017/+VSdOnHDq\n8T9/7xYWFlo/zIOCglRYWOhyLXfYqvPBBx9o5MiRbtVatWqVMjMz1bp1a7355psu13Jnu6rp+e3b\nt0+BgYHq3Lmzy7Vc2a489blbF5rMHnNdKC4uVnJyshYsWFDtG6mzvL29tWnTJm3fvl0HDhzQt99+\n63SNTz75RAEBAR4LhnfffVebNm3Sa6+9prffflt79+51qU5FRYW++uor3X///crMzFTLli3dOr5f\nVlamnJwcjRgxwuUa586dU3Z2trKzs7Vjxw6VlpZq06ZNTtcJDw/XY489pkcffVSPPfaYbrrpJnl5\nmeMtVVpaqrVr1+qJJ57wSL37779fW7du1aZNmxQcHKznnnvOpTrvvvuu5s+fr+3bt2v+/PlauHCh\nyz0tXbpU77zzjhISElRcXCxfX99aP9bee9disTg1wuCpzwFbddasWSNvb2/dfffdbtWaMWOGtm/f\nrri4OL311lsu1fL29nZ5u7L1/DZv3uz0F+1f1nJlu/LE525dMcenSD3w9GVCy8vLlZycrLi4OA0b\nNswTLapNmzbq27evduzY4fRjv/jiC+Xk5CgmJkYzZ87UZ599ptmzZ7vcy5XXJjAwUEOHDnV5dCE0\nNFShoaHWb6MjRozQV1995XJfubm56tGjh9q3b+9yjZ07d+r6669XQECAmjVrpmHDhrl0QpokjRs3\nThkZGXr77bfVtm1bp7/115WjR4/q2LFj1hNrTp48qYSEBJ06dcqleu3bt5e3t7e8vLw0btw4l0+M\n+ctf/mJ9v4wcOdKtUavw8HCtW7dOGRkZio2NVceOHWv1uJreu4GBgSooKJAkFRQUKCAgwOVarrBV\nJyMjQ9u2bdMLL7xQ6y8LjnqKi4ur9SGXX9Zydbuy1VNFRYU+/vhjjRo1qlb92KrlznblzuduXWky\nwezJy4QahqGFCxeqS5cuSkxMdKuvM2fOWM+2vHjxonbu3OnSMY5Zs2YpNzdXOTk5Wrlypfr166cX\nXnjBpZ5KSkqsZ7iWlJTo008/dfnKbUFBQQoNDdX3338v6fLx4fDwcJdqSZeHsWNjY11+vCSFhYVp\n//79Ki0tlWEYbvV0Zcjz+PHj2rJli+Li4tzqzVO6deumXbt2KScnRzk5OQoNDVVGRoaCgoJcqncl\ntKTLQ+Subg/BwcHas2ePJOmzzz5z64vMlde+qqpKa9as0e9+9zuHj7H13o2JiVFmZqakyzfdGTJk\niMu1nGWrTm5urtLT07VmzRq1bNnSrVqHDx+2/n92dnatPmNqquXKdmXvdbryeffzw4yuPD9ntytP\nfe7WlSZ15a/t27dr2bJl1suETp482aU6+/bt04MPPqiuXbtahy5nzpypQYMGOV3r4MGDmjdvnior\nK2UYhkaMGKGpU6e61NcVu3fv1rp167R27VqXHv/DDz9oypQpki4fhxk9erTLr5V0+acMCxcuVHl5\nuTp27KiUlBSXjk+WlJRo8ODB2rp1q1q3bu1yP5K0evVqffjhh/Lx8VH37t21dOlSp4ZCr3jggQd0\n9uxZ+fj4WH/SU1szZ87Unj17VFRUpMDAQE2bNk3XXXednnnmGZ05c0Zt2rRR9+7d9frrr7tUa9y4\ncdb5MTEx2rhxY632BGuqtWfPHh08eFCS1KFDBy1ZssThCTY11bnhhhu0bNkyVVRUqHnz5nr66adr\ndfilplolJSV65513JElDhw7VrFmzHO5V2nrv9urVS9OnT9eJEycUFham1NRUXXfddS7VKisrc+pv\naKvOs88+q7KyMmsfERERWrJkiUs9bdy4Uf/+979lsVjUoUMHLV682OGIYW0+52qzXdmrM2/ePEVE\nROj++++324ujWv7+/k5tV7Y+dz/++GOX3n+e1qSCGQAAs2syQ9kAADQEBDMAACZCMAMAYCIEMwAA\nJkIwAwBgIgQzAAAmQjADAGAiBDMAACby/wEl7hTX0t5GlQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fb419519198>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Y = np.arange(len(l2_train[0]))\n",
"plt.bar(Y, l2_train[0], align='center', alpha = 0.5, label = '1/ 58', color = 'red')\n",
"plt.bar(Y, l2_train[1], align='center', alpha = 0.5, label = '2 / 58', color = 'green')\n",
"plt.bar(Y, l2_train[-2], align='center', alpha = 0.5, label = '1 / 2', color = 'blue')\n",
"plt.bar(Y, l2_train[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n",
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n",
"plt.legend(loc = 'best')\n",
"plt.title('Hist without bad files. Petr')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 75.95470465, 61.77565813, 43.86709154, 25.50273898, 25.51076911])"
]
},
"execution_count": 95,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"l2_train = np.mean(l2_train, axis = 1)\n",
"l2_train"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3UAAAG5CAYAAAApux3GAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xt4nHWd///XPedDZiaZZJJMzklby6EIRQ4tAkorIFDW\nCiyyssjiF+siLisqroh4QNDF3cW6ij+JyIp7ubCItSiwLrZykKNUihUpUJqkzXkmxznmPL8/0ka7\nbdM0yZyS5+O6cl2Ze2bu+53wIcyLz+f+vI1UKpUSAAAAACAvmbJdAAAAAABg9gh1AAAAAJDHCHUA\nAAAAkMcIdQAAAACQxwh1AAAAAJDHCHUAAAAAkMcIdQCAGVmzZo2ef/75jF3vS1/6ku6+++6MXe9w\nrr32Wv385z/PdhmH9dJLL+nss8+e99cCAPIHoQ4AcNR+/vOf65JLLtHJJ5+ss88+W9/85jc1NjY2\n6/Nt2rRJf/M3f3PAsdtuu03XX3/9nOpcvny59uzZM6dz3HvvvfrgBz84p3PMh02bNmn58uV6/PHH\ns10KACDHEOoAAEctmUzqC1/4gl588UX99Kc/1Ysvvqj77rvvkK+dS9hLt1yu7f/6+c9/rsLCQm3e\nvDnbpQAAcgyhDgBw1D784Q/rlFNOkc1mU1lZmS6++GK98sorU8+vWbNGjY2Nuvjii3XSSSdpbGxM\njY2Net/73qeVK1fqwgsv1K9//WtJ0u7du/XlL39Zr776qlauXKlTTjlFkvT5z39e3/rWt6bO+dBD\nD+ncc8/Vaaedpr//+79Xd3f3tDVeeeWVkqQPfOADWrlypR5//PGp5YeNjY1697vfrZtvvlmDg4P6\n+Mc/rlWrVunUU0/Vxz/+cXV1dU2d56qrrtJPf/pTSX+eUbzzzjt16qmnas2aNXr66acPef3Gxkbd\ncMMNBxy7/fbbdfvtt0+da+3atVq5cqXWrFmjX/ziF4f9Wdrb2/Xyyy/rtttu07PPPqtwOHzY165Z\ns0b33HOPLrzwQp166qm6+eabNTw8fMBr7rvvPq1evVpnnnmmfvazn00df+qpp7R+/XqdfPLJes97\n3qPvfOc7h70OACB3EOoAAHP28ssva+nSpQcce+yxx9TY2Kht27bJYrGourpaP/nJT/T73/9en/zk\nJ3XTTTcpFAppyZIl+upXv6qTTjpJ27dv17Zt2w46/wsvvKB/+7d/08aNG/Xss8+qsrJSn/70p6et\n6Sc/+Ykk6ZFHHtH27dt14YUXSpJ6eno0ODioJ598Ul/72tc0MTGhSy65RE8++aSefPJJ2e123Xbb\nbYc9744dO1RfX68XX3xR1157rW655RalUqmDXnfRRRfp6aefViwWkySNj4/rV7/6ldatW6dEIqHb\nb79dP/jBD7R9+3Y9+OCDOvbYYw97zc2bN2vFihU6//zztWTJEv3yl7+c9mf/5S9/qR/+8If69a9/\nrebmZn3ve9+beq6np0fRaFTPPPOM7rjjDt12220aHByUJDmdTt15553atm2b7rnnHj3wwAPasmXL\ntNcCAGQfoQ4AMCcPP/ywXnvtNX30ox894PhVV12lYDAoh8MhSbrgggtUVlYmk8mkCy+8ULW1tdqx\nY8eMrvHLX/5Sl156qY4//njZbDZ9+tOf1quvvqq2trajrtdkMumGG26QzWaTw+FQUVGRzj//fDmd\nThUUFOi6667Tyy+/fNj3V1RU6PLLL5fZbNYHP/hBhcNh9fT0HPS6yspKHXfccVOh6MUXX5TD4dBJ\nJ500VceuXbs0NDSk0tJSLVu27LDXfOSRR7Ru3TpJ0rp16464BPPKK69UMBhUYWGhrrvuOj322GNT\nz1ksFl1//fWyWq16z3veI5fLpebmZknS6aefruXLl8tkMumYY47RRRddpN/97nfTXgsAkH2EOgDA\nrG3ZskV33XWXfvCDH8jv9x/wXDAYPODx5s2b9YEPfECnnHKKTjnlFO3atUv9/f0zuk4oFFJlZeXU\nY7fbrcLCwiMuwTyUoqIi2e32qcfJZFJf+tKXdM455+jkk0/WlVdeqUgkovHx8UO+v6SkZOp7p9Mp\nSUokEod87bp16/Too49Kkh599NGpYOZyufStb31LDz74oM4880xt2LBBu3fvPuQ5fv/736utrU0X\nXXTR1Dnfeust7dy587A/41/+7isqKhQKhaYeFxYWymKxHPAz7K//D3/4g6666iqtWrVK73rXu/Tg\ngw/O+J8RACB7CHUAgFl55pln9MUvflHf//73tXz58oOeNwxj6vv29nZ98Ytf1K233qqXXnpJ27Zt\nO2Bm6i9feyilpaVqb2+fepxIJDQwMKCysrKjrvv/Xuu+++5Tc3OzHnroIb3yyitTyzYPtaTyaF1w\nwQX63e9+p66uLv3617/WxRdfPPXcWWedpf/4j//Qs88+q4aGBt16662HPMfmzZuVSqW0fv16vfvd\n79bll18uSdO2Wejs7Jz6vqOjQ6WlpTOq9zOf+YzWrl2rp59+Wr///e91xRVXzMvvAQCQXoQ6AMBR\ne+GFF3TTTTfpO9/5jt75znce8fXJZFKGYUzN5v3sZz/Trl27pp4vLi5Wd3e3RkZGDvn+devWadOm\nTdq5c6dGRkZ011136Z3vfKeqqqqmvW5JSYlaW1unfU08HpfdbpfX69XAwIC++93vHvHnmSm/36/T\nTjtNN998s6qqqrRkyRJJk/e1bdmyRYlEQjabTS6XSybTwf9JHh4e1v/8z//otttu0+bNm6e+br31\nVj366KOH3b3zv/7rv9TV1aWBgQF9//vfn7qf8Eji8bh8Pp/sdrt27NgxNcsIAMhthDoAwFH73ve+\np2g0qg0bNmjlypVauXKlrr322sO+funSpfroRz+qK664QmeccYbeeustnXzyyVPPr1q1SkuXLtWZ\nZ56p008//aD3n3HGGfrHf/xH/cM//IPOPPNMtba2HrAz5uF88pOf1Oc//3mdcsoph+3vdvXVV2t4\neFirVq3Shz70IZ111lkz+A3M3Lp16/T8889PLb2UpImJCf3oRz/SWWedpdNOO00vv/yyvvKVrxz0\n3i1btsjhcGj9+vUKBAJTX5deeqnGx8f129/+9rDX/OhHP6r3ve99qqmp0XXXXTejWr/85S/r3//9\n37Vy5UrdfffduuCCC2b1MwMAMstIsa4CAIAFY82aNbr99tt1xhlnZLsUAECGMFMHAAAAAHnMcuSX\nAACQm7Zt26aPfexjh3xu+/btGa4GAIDsYPklAAAAAOQxll8CAAAAQB7Li+WX4XA07dcoKnKpv//Q\nzWOB+cI4Q6Yw1pApjDVkCmMNmZKrYy0Q8Bz2OWbq9rFYzNkuAYsA4wyZwlhDpjDWkCmMNWRKPo41\nQh0AAAAA5DFCHQAAAADkMUIdAAAAAOQxQh0AAAAA5DFCHQAAAADkMUIdAAAAAOQxQh0AAAAA5DFC\nHQAAAADkMUIdAAAAAOQxQh0AAACAWWsLx/TkK236xbPNevKVNrWFY3M+57nnniVJ2rXrTX3849fo\nb//2cl199RXauvWJoz7XM888pebmpqnH9977fb388ktHfZ6HHvovDQ0NHfX7Znu9o2FJ69kBAAAA\nLFht4Zi2vRGaejwYH5l6XBUomPP57XaHvvjFr6q6ukY9PWH9v//3tzrttNXyeDwHvG58fFxms/mQ\n5/jtb5/SGWecqfr6BknStdf+/axqeeihB3TeeRfK4XAc9Nx015/t9Y4GoQ4AAADAIb3W3KuOnsRh\nn9/VNqChkfGDjrf3xLWsqvCQ76kocWlFffGMrl9TUzv1fUlJQIWFfg0M9Mvj8eiyyy7WmjXnatu2\nl/ThD39EiURCv/jFzzU6OqqqqirdeuvXtGvXm3r22Wf06quv6P7779Mdd3xTP/rRvTrjjDN1zjnv\n07Ztv9Pdd2/U+Pi4jjnmOH32szcfso6f/vRB9fSEdcMNH5fPV6jvfOcenXvuWfqrv7pE27b9Tp/+\n9D/plVde1nPP/VbDw0NaseJEfe5zX5BhGLrjjq9MXe+yyy7WBRes03PPPaOxsTF97Wt3qra2bka/\ni+mw/BIAAADArAwfItBNd3wuXn/9NY2NjaqysmrqmM/n0333/UTve9/5es97ztG99/5Y99//gGpr\n6/Xoo5t1wgkn6swzz9YnPnGDfvSj/zrgvcPDw/r617+qr371G/rxj/9b4+Pj2rz54UNe+6//+gqV\nlAT07/9+j77znXskSclkUscdt0L33/+ATjzxJF166eW6994f6z//8yGNjAzpued+e8hz7a95/frL\n9MAD/zkvvxtm6mahLRzTrtYBRROj8risWlZdOC/TywAAAEAuWVFfPO2smtVsaDA+ctBxn9umc06u\nOsQ7Zqenp0df+9qXdMstX5XJ9Od5qbVrz5v6vqlpt37wg/9PsVhUyWRSp522atpz7t27R8FgxdRs\n4AUXrNOmTT+dcU1ms1nvfe+aqcevvLJNP/nJjzU8PKRIJKK6uiU688yzD3rfe94z+Z7ly4/V008/\nOePrTYdQd5T2rxseG5+QJA3GU/O6bhgAAADIF8uqCw+4p+4vj8+XeDymz33uH7Vhwye0YsUJBzzn\ncDinvv/617+qr3/9X7Vs2Tv0+OO/1Pbtv5+3Gg7FZrNN3Uc3PDysf/u3O3XvvT9WWVm5fvjDezQy\nMnzI91mtNkmS2WzS+PjYvNTC8sujtKt1QJLUFo6rNRQ76DgAAACwWFQFCnTKMaXyuW0yGYZ8bptO\nOaZ03iY7RkdH9YUv3KT3v/8inXPO+6Z9bSIRV0lJicbGxvTEE/8zddzlcimROPi+wJqaWnV2dqit\nrVWS9L//+7hOOunkw55/8jzxQz43MjI5W1lYWKhEIqGnntp6xJ9tPjFTd5SiiVFJksmQkiMTSqUk\nw/jzcQAAAGAxqQoUpG3F2m9+82u9+uorGhwc1OOPPypJuuWWL2vZsuUHvfbaa6/Thg1/p8LCQh13\n3IqpILd27Xn65jfv0MMPP6jbb//m1Ovtdru+8IUv69Zb/2lqo5T16y89bC1/9Vcf1Gc+8w8qKQlM\n3Ve3n8fj0cUXr9dVV31IxcXFOvbY4+fjx58xI5VKpTJ6xVkIh6Npv0Yg4JnRdZ58pU2D8RF19iY0\nGB9WQ4VPNotp3tcNY2Ga6TgD5oqxhkxhrCFTGGvIlFwda4GA57DPsfzyKO1fH2yzTP7qRsfGDzgO\nAAAAAJnE8sujtH9q+Xevd6tncEg2i3le1w0DAAAAyJ7rr79eLS17Dzh23XX/oNNPX52lio6MUDcL\nVYECuVZaZDIZWlrpI9ABAAAAC8Tdd9+dk8svp8Pyy1lyO62SpNgQG6QAAAAAyB5C3SzZLCZZLSYl\nhuantwQAAAAAzAahbpYMw5DbYVU8Oao82EAUAAAAwAJFqJsDt9Oq8YmUhkbGs10KAAAAgEWKUDcH\nLsfkPjNx7qsDAAAAkCWEujkocExulhJPcl8dAAAAgOwg1M3B/pm6BDN1AAAAALKEUDcH7v0zdeyA\nCQAAACBLCHVz4LCbZTIZ9KoDAAAAkDWEujkw7WtrQK86AAAAANlCqJsjt8OikdFxjYzS1gAAAABA\n5hHq5sjFfXUAAAAAsohQN0duJ73qAAAAAGQPoW6O9u+AyX11AAAAALKBUDdH7n296uJJZuoAAAAA\nZB6hbo5cDosMg7YGAAAAALKDUDdHZpNJTpuZ5ZcAAAAAsoJQNw/cTquSw2MaG5/IdikAAAAAFhlC\n3Txw7buvLjHMbB0AAACAzCLUzYP9O2CyWQoAAACATCPUzYP9O2ByXx0AAACATCPUzQO3c99MHTtg\nAgAAAMgwQt08+HOvOmbqAAAAAGQWoW4eWC1m2a1mZuoAAAAAZByhbp64nVYlhsc0kUpluxQAAAAA\niwihbp647BZNTKQ0RFsDAAAAABlEqJsn+zdLibEDJgAAAIAMItTNkz+3NeC+OgAAAACZQ6ibJ39u\nQM5MHQAAAIDMIdTNE9f+tgbM1AEAAADIIELdPHHYzDKbTYpzTx0AAACADCLUzRPDMFTgsCieHFWK\ntgYAAAAAMsSSrhM3NTXpxhtvnHrc2tqqG264QevXr9eNN96o9vZ2VVZWauPGjfL5fOkqI6NcDqsG\n4yMaGZ2Q3WbOdjkAAAAAFoG0zdQ1NDTokUce0SOPPKJNmzbJ6XTq3HPPVWNjo1avXq0nnnhCq1ev\nVmNjY7pKyDi3k/vqAAAAAGRWRpZfvvDCC6qurlZlZaW2bt2q9evXS5LWr1+vLVu2ZKKEjJjaAZP7\n6gAAAABkSNqWX/6lxx57TOvWrZMk9fb2qrS0VJIUCATU29t7xPcXFblksaR/OWMg4JnT+8cMk97u\njMpqt875XFi4GBvIFMYaMoWxhkxhrCFT8m2spT3UjYyM6De/+Y0+85nPHPScYRgyDOOI5+jvT6Sj\ntAMEAh6Fw9E5nWMoOap4fFjtXYMq99nnqTIsJPMxzoCZYKwhUxhryBTGGjIlV8fadEEz7csvn3nm\nGR1//PEqKSmRJBUXFysUCkmSQqGQ/H5/ukvIGJfDIpNhsPwSAAAAQMakPdQ99thjuuiii6Yer1mz\nRps3b5Ykbd68WWvXrk13CRljMgw5HRY2SgEAAACQMWkNdYlEQs8//7zOO++8qWMbNmzQc889p/PO\nO0/PP/+8NmzYkM4SMs7tsGh4ZFyjYxPZLgUAAADAIpDWe+pcLpdeeumlA44VFRXp/vvvT+dls2py\nB8ykEkOj8hVwXx0AAACA9MpIS4PFhLYGAAAAADKJUDfPaEAOAAAAIJMIdfPMtX+mLslMHQAAAID0\nI9TNM7eDmToAAAAAmUOom2cWs0kOm4V76gAAAABkBKEuDdwOi5LDY5qYSGW7FAAAAAALHKEuDdxO\nq1KplBLDzNYBAAAASC9CXRpwXx0AAACATCHUpYGbHTABAAAAZAihLg1czNQBAAAAyBBCXRq4nftm\n6gh1AAAAANKMUJcGNotJVouJ5ZcAAAAA0o5QlwaGYcjtsCoxNKpUirYGAAAAANKHUJcmbqdV4xMp\nDY2MZ7sUAAAAAAsYoS5NpjZLSXJfHQAAAID0IdSlScH+tgZD3FcHAAAAIH0IdWlCA3IAAAAAmUCo\nSxPXvpm6BDN1AAAAANKIUJcmTrtZZpOhGDN1AAAAANKIUJcmhmHI5bAyUwcAAAAgrQh1aeR2WDQy\nOq6RUdoaAAAAAEgPQl0audgBEwAAAECaEerSyO1kB0wAAAAA6UWoS6OpXnU0IAcAAACQJoS6NHLt\n61XHZikAAAAA0oVQl0Yuh0WGQVsDAAAAAOlDqEsjs8kkp83MTB0AAACAtCHUpZnbaVVyeExj4xPZ\nLgUAAADAAkSoSzPuqwMAAACQToS6NHNP9arjvjoAAAAA849Ql2ZuJw3IAQAAAKQPoS7N3FPLL5mp\nAwAAADD/CHVpNrX8MslMHQAAAID5R6hLM6vFJLvVzD11AAAAANKCUJcBbqdVieExTaRS2S4FAAAA\nwAJDqMsAl92iiYmUksMswQQAAAAwvwh1GcAOmAAAAADShVCXAft3wIwnua8OAAAAwPwi1GXA/h0w\nE8zUAQAAAJhnhLoMcDv3zdSxAyYAAACAeUaoywC71SyL2cQ9dQAAAADmHaEuAwzDkNthUTw5qhRt\nDQAAAADMI0JdhrgcVo2NT2h4dDzbpQAAAABYQAh1GbL/vjo2SwEAAAAwnwh1GbJ/B8wYbQ0AAAAA\nzCNCXYbs71XHTB0AAACA+USoyxC3c3KmjrYGAAAAAOYToS5DnHaLTIZBWwMAAAAA88qS7QIWi46e\nuNp6YtrVNqDx8Qktqy5UVaAg22UBAAAAyHPM1GVAWzimbW+END6e0uj4hPqjw9r2Rkht4Vi2SwMA\nAACQ5wh1GbCrdUCSZLNM/rr396rbfxwAAAAAZotQlwHRxOTmKPs3SxmMjxxwHAAAAABmi1CXAR7X\nZJhzO62yWcyKxEc0PpGaOg4AAAAAs0Woy4Bl1YWSJENSkceuiVRKA7HhqeMAAAAAMFvsfpkB+3e5\n3NU6oFRKiiZHVeC0qqLYneXKAAAAAOQ7Ql2GVAUKpsLdjt29auoYVEdvnLYGAAAAAOaE5ZdZ0FDh\nlWEYauqIZLsUAAAAAHmOUJcFBU6ryvxO9UWG1BcZynY5AAAAAPIYoS5LGip8ksRsHQAAAIA5IdRl\nScDnkNdtU0dPXMnhsWyXAwAAACBPpTXURSIR3XDDDXr/+9+vCy64QNu3b9fAwICuueYanXfeebrm\nmms0ODiYzhJylmEYWlLh00QqpeZOZusAAAAAzE5aQ90dd9yhs846S7/61a/0yCOPaMmSJWpsbNTq\n1av1xBNPaPXq1WpsbExnCTmtMuCW3WrWnq6oxsYnsl0OAAAAgDyUtlAXjUb18ssv67LLLpMk2Ww2\neb1ebd26VevXr5ckrV+/Xlu2bElXCTnPYjapttyj4dFxtYfj2S4HAAAAQB5KW5+6trY2+f1+3Xzz\nzXrjjTd0/PHH65ZbblFvb69KS0slSYFAQL29vUc8V1GRSxaLOV2lTgkEPGm/xv91qsehjv4hdUeG\n9a4VQRmGkfEakFnZGGdYnBhryBTGGjKFsYZMybexlrZQNzY2ptdff1233nqrTjzxRN1+++0HLbU0\nDGNGIaa/P5GuMqcEAh6Fw9G0X+dQCp0WtXVHtPPtsAKFzqzUgMzI5jjD4sJYQ6Yw1pApjDVkSq6O\ntemCZtqWX5aXl6u8vFwnnniiJOn973+/Xn/9dRUXFysUCkmSQqGQ/H5/ukrIGw0VXknS7o7FuWkM\nAAAAgNlLW6gLBAIqLy9XU1OTJOmFF17QkiVLtGbNGm3evFmStHnzZq1duzZdJeQNv9ehIo9d3X1J\nxZKj2S4HAAAAQB5J2/JLSbr11lv12c9+VqOjo6qurtY3vvENTUxM6FOf+pQefvhhVVRUaOPGjeks\nIW8sqfBp25shNXdGdEJDcbbLAQAAAJAn0hrqjj32WG3atOmg4/fff386L5uXKkrccjRbtLc7qmNq\nimS10BceAAAAwJGRHHKEyWSoPujR6NiE9oZy78ZMAAAAALmJUJdD6sq9MpsMNXVENJFKZbscAAAA\nAHmAUJdD7DazqkoLFE+Oqrsv/W0cAAAAAOQ/Ql2OaajwSZKaOiJZrgQAAABAPiDU5Rif26ZAoVPh\ngaQG4yPZLgcAAABAjiPU5aD9zcibaEYOAAAA4AgIdTmozO+S22FVWyim4dHxbJcDAAAAIIcR6nKQ\nyTDUUOHV+ERKe7pobwAAAADg8Ah1OaqmzCOrxaTmzogmJmhvAAAAAODQCHU5ymoxqbrUo+TwmDp6\n49kuBwAAAECOItTlsIYKrwzDoL0BAAAAgMMi1OWwAqdVZX6n+iJD6osMZbscAAAAADmIUJfjaEYO\nAAAAYDqEuhwX8DnkddvU0RNXcngs2+UAAAAAyDGEuhxnGIaWVPg0kUqpuZPZOgAAAAAHItTlgcqA\nW3arWXu6ohobn8h2OQAAAAByCKEuD1jMJtWWezQ8Oq72MO0NAAAAAPwZoS5P1Ae9MhmGdncMKpWi\nGTkAAACASYS6POG0W1RR4lYkPqKeQdobAAAAAJhEqMsjDRVeSdLujsEsVwIAAAAgVxDq8ojf65Df\n61B3X1Kx5Gi2ywEAAACQAwh1eaYh6FWK9gYAAAAA9iHU5ZmKErccNov2dkc1OkZ7AwAAAGCxI9Tl\nGZPJUEOFV6NjE9rbHc12OQAAAACyjFCXh2rLPTKbDDV1RjRBewMAAABgUSPU5SG71ayq0gLFk6Pq\n7ktkuxwAAAAAWUSoy1MNFT5JUlMHG6YAAAAAixmhLk/53DYFCp0KDyQ1GB/JdjkAAAAAsoRQl8f2\nNyNvohk5AAAAsGgR6vJYmd8lt9OqtlBMw6Pj2S4HAAAAQBYQ6vKYyTDUEPRqfCKlPV20NwAAAAAW\nI0Jdnqsp88hqMampI6KJCdobAAAAAIsNoS7PWS0m1ZR5NDQypo6eeLbLAQAAAJBhhLoFoD7olWFM\nNiMHAAAAsLgQ6haAAqdVZX6n+iJD6osMZbscAAAAABlEqFsgltCMHAAAAFiUCHULRInPIa/bpo6e\nuJLDY9kuBwAAAECGEOoWCMMwtKTCp4lUSs3cWwcAAAAsGoS6BaQy4JbdataerqjGxieyXQ4AAACA\nDCDULSAWs0m15R4Nj46rPUx7AwAAAGAxINQtMPVBr0yGod0dg0qlaEYOAAAALHSEugXGabeoosSt\nSHxE4UHaGwAAAAAL3VGFukQioUQika5aME8aKrySpKaOwSxXAgAAACDdZhTq9u7dq8svv1ynn366\nVq1apSuuuEKtra3prg2z5Pc65Pc61N2XVCw5mu1yAAAAAKTRjELdl7/8ZV1++eXasWOH/vCHP+iv\n//qv9aUvfSndtWEOGoJepVIpmpEDAAAAC9yMQl1fX58uu+wyGYYhwzB06aWXqq+vL921YQ4qStxy\n2CxqDUU1OkZ7AwAAAGChmlGoM5lMampqmnrc3Nwss9mctqIwdyaToYYKr0bHJrS3O5rtcgAAAACk\niWUmL7rxxht15ZVX6thjj5UkvfHGG/rmN7+Z1sIwd7XlHr25t19NHRHVV0y2OgAAAACwsMwo1J19\n9tl69NFHtWPHDknSiSeeKL/fn9bCMHd2q1lVpQXa0xVVd19CwWJ3tksCAAAAMM9mFOokqbi4WOec\nc046a0EaNFT4tKcrqqaOCKEOAAAAWICmDXVXX3217r//fq1atUrGXyzdS6VSMgxDL7zwQtoLxNz4\n3DYFCp0KDyQ1GB+Rz23LdkkAAAAA5tG0oe5f/uVfJEk/+9nPMlIM0qOhwqvwQFJNHYNauSyQ7XIA\nAAAAzKNpd78sLS2VJD3++OOqrKw84Ovxxx/PSIGYu3K/S26nVW2hmIZHxrNdDgAAAIB5NKOWBocK\ncIS6/GEYhhqCXo1PpNTSRTNyAAAAYCGZdvnlc889p2effVahUOiAFgaxWEypVCrtxWH+1JR59Mbe\nfjV3RrWsqlAmE+0NAAAAgIVg2pk6q9Uqt9stwzDkcrmmvhoaGvTd7343UzViHlgtJtWUeTQ0MqaO\nnni2ywFV3OJ0AAAgAElEQVQAAAAwT6adqTvttNN02mmn6bzzztM73vGOTNWENKkPetXUEdHujkFV\nlRZkuxwAAAAA82BGfere8Y536Nlnn9XOnTs1PDw8dfyTn/xk2grD/CtwWlXmd6qrN6G+yJD8Xke2\nSwIAAAAwRzMKdf/6r/+qP/7xj3r77be1du1abd26VatXr053bUiDJRU+dfUm1NQRIdQBAAAAC8CM\ndr98+umn9cMf/lDFxcW67bbbtGnTJg0ODh7xfWvWrNHFF1+sD3zgA7rkkkskSQMDA7rmmmt03nnn\n6ZprrpnReTB/SnwOed02dfTElRwey3Y5AAAAAOZoRqHOZrPJYrHIMAyNjo6qrKxMXV1dM7rA/fff\nr0ceeUSbNm2SJDU2Nmr16tV64okntHr1ajU2Ns6+ehw1wzC0pMKniVRKzZ20NwAAAADy3YxCndvt\nVjKZ1MqVK/X5z39e//zP/yyHY3ZL97Zu3ar169dLktavX68tW7bM6jyYvcqAW3arWXu6ohobn8h2\nOQAAAADmYEah7q677pLZbNY//dM/acmSJTIMQ9/+9rdndIFrrrlGl1xyif77v/9bktTb26vS0lJJ\nUiAQUG9v7yxLx2xZzCbVlns0PDqu9jDtDQAAAIB8dsSNUsbHx7Vx40bdfvvtkqRPfOITMz75Aw88\noLKyMvX29uqaa65RQ0PDAc8bhiHDOHIT7KIilywW84yvO1uBgCft18gVp3oc6ugfUndkWO9aEZzR\nPwfMj8U0zpBdjDVkCmMNmcJYQ6bk21g7Yqgzm8168803Z3XysrIySVJxcbHOPfdc7dixQ8XFxQqF\nQiotLVUoFJLf7z/iefr7E7O6/tEIBDwKh6Npv04uKXRa1NYd0etvh1Va6Mx2OYvCYhxnyA7GGjKF\nsYZMYawhU3J1rE0XNGe0/HLVqlW67bbbtGPHDr399ttTX9NJJBKKxWJT3z/33HNatmyZ1qxZo82b\nN0uSNm/erLVr187058A8a6jwSpKaOtiBFAAAAMhXM+pT99hjj0mSnnrqqaljhmFo69ath31Pb2+v\nrr/+ekmTSzjXrVuns88+WyeccII+9alP6eGHH1ZFRYU2btw4h/IxF36vQ36vQ919ScWSoypwWrNd\nEgAAAICjZKRSqVS2iziSTEx/5uo0a7q1hWPa9kZIDRU+vXNJcbbLWfAW6zhD5jHWkCmMNWQKYw2Z\nkqtjbc7LL7FwVRS75bRb1BqKanSM9gYAAABAvpk21LW2turv/u7vdP755+vOO+/U8PDw1HMf+tCH\n0l4c0s9kMlQf9Gp0bEJ7u3Pv/0gAAAAAmN60oe4rX/mKzj33XN11110aGBjQ1VdfrWh08oP/XwY8\n5Lfaco/MJkNNHRFN5P5qXAAAAAB/YdpQ19vbqyuvvFLHH3+8vvGNb2jt2rX6yEc+ov7+fvqaLSB2\nq1lVpQWKD42quy/97SMAAAAAzJ9pd7/8v7NxH/vYx+RwOPSRj3xEyWQyrYUhsxoqfNrTFVVTR0TB\nYne2ywEAAAAwQ9PO1C1btkxPPvnkAceuuuoqXXnllWpvb09rYcgsn9umQKFT4YGkBuMj2S4HAAAA\nwAxNG+q+/e1v673vfe9Bx6+44gpt27YtXTUhS2hGDgAAAOSfaZdfDg0NHfY5k4luCAtNud8lt9Oq\ntlBMx9X6ZbeZs10SAAAAgCOYNtStXLlShmHoL/uT739sGIZ27tyZ9gKROYZhqKHCqz/u7lVLV0TL\na4qyXRIAAACAI5g21L3xxhuZqgM5oqbUozf29Ku5M6plVYUymdjlFAAAAMhlrKHEAawWk2rKPBoa\nGVNHTzzb5QAAAAA4AkIdDlIf9MowDO1mwxQAAAAg5xHqcJACp1Vlfqf6o8Pqixx+sxwAAAAA2Ueo\nwyEtqfBJkpo6IlmuBAAAAMB0CHU4pBKfQ163TR09cSWHx7JdDgAAAIDDINThkAzD0JIKnyZSKTV3\nMlsHAAAA5CpCHQ6rMuCW3WpWS1dUY+MT2S4HAAAAwCEQ6nBYFrNJteUejYyOqy0cy3Y5AAAAAA6B\nUIdp1Qe9MhmGmjoiSqVS2S4HAAAAwP9BqMO0nHaLKkrcisRHFB6kvQEAAACQawh1OKKGCq8kqamd\nZuQAAABAriHU4Yj8Xof8Xoe6+5OKJUezXQ4AAACAv0Cow4w0VHiVSqVoRg4AAADkGEIdZqSi2C2n\n3aK93VGNjo1nuxwAAAAA+xDqMCMmk6H6oFdj4xPa2017AwAAACBXEOowY7XlHplNk+0NJmhvAAAA\nAOQEQh1mzG41q6q0QPGhUXX3JbJdDgAAAAAR6nCUllT4JIkNUwAAAIAcQajDUfG6bQoUOhUeSGow\nPpLtcgAAAIBFj1CHo0YzcgAAACB3EOpw1Mr9LrmdVrWFYxoeob0BAAAAkE2EOhw1wzDUUOHV+ERK\nLV3cWwcAAABkE6EOs1JT6pHVYlJzZ1QTE7Q3AAAAALKFUIdZsVpMqinzaGhkTB098WyXAwAAACxa\nlmwXgPzVUOHVq7t69NiLLSr3u+R12bSsulBVgYJslwYAAAAsGoQ6zFp/dFiD8WHFkqPyumxKpaRt\nb4QkiWAHAAAAZAjLLzFru1oH5Pc4JEmtoZg6e+NKDo/prdaBLFcGAAAALB6EOsxaNDEql8OioN8t\nq8WkwfiI9nRH9cfdvWrujGh0bCLbJQIAAAALHssvMWsel1WD8RH5CmzyFdiUGBpTf2xYY2MT+sPb\nPfpTc5+qSgtUH/TK57Zlu1wAAABgQSLUYdaWVRdO3UMnSS6HRS6HRSc0FGtsfEItXVG1dEbU0hmR\n3+tQfdCrihKXzCYmiAEAAID5QqjDrO3fDGVX64CiiVF5XNYDdr9cVl2o7r6EWjqjCg0k1RcJ6bUm\ns2rKPKot96jAac1m+QAAAMCCQKjDnFQFCg6706XJMBQsditY7FZ8aFQtnVHt7Y5qV9uAdrUNqKzI\npbqgR2V+l0yGkeHKAQAAgIWBUIeMcDusOr7er2NqC9XRk1BzZ0Td/Ql19yfktFtUV+5RTZlHTjtD\nEgAAADgafIJGRplNJlWXFqi6tECD8RE1d0bUFopp555+vbl3QOXFLtUHvSrxOWQwewcAAAAcEaEO\nWeNz23TS0hIdX+dXWzimls6IOnri6uiJy+Oyqa7co+rSAtms5myXCgAAAOQsQh2yzmoxqT7oVV25\nR/3RYTV3RtTeE9cfm3r1+p5+VZW4VRf0qshjz3apAAAAQM4h1CFnGIYhv9chv9ehFQ3j2tsdVUtn\nVHu6J78KPXbVl3tVGXDLYqYtAgAAACAR6pCj7FazllUVammlT6GBpFo6o+rqS2j7rrBea+5VdalH\ndUGPvC6amgMAAGBxI9QhpxmGobIil8qKXEoMjU3O2nVF1dQxqKaOQZX4nKoPehQsdstkYmMVAAAA\nLD6EOuQNl8OiY2uLtLy6UJ19CbV0RhQeSKpnMCmHzaLasgLVlnvlcjCsAQAAsHjw6Rd5x2QyVFni\nVmWJW9HEiFq6Jpuav9k6oLfaBlXmd6q+3KvSIidtEQAAALDgEeqQ1zwum05oKNaxtUVqD8fV0hVR\nV29CXb0JuR1W1ZZ7VFvmkd1GWwQAAAAsTIQ6LAgWs2kywO1ri9DSFVFbOK7XW/r0xt5+VRS7VR/0\nyu+1M3sHAACABYVQhwWnyGNXkSegFfV+7Q3F1NIZVVs4prZwTF63TfVBr6oCBbJaaIsAAACA/Eeo\nw4JltZi1pMKnhqBXvYNDau6KqrMnrj+83aM/NfepqrRA9eUe+Qpoag4AAID8RajDgmcYhkoKnSop\ndGpoZEx7uibbIrR0RtTSGZHf61BduUeVAbfMJmbvAAAAkF8IdVhUHDaLltcUaVl1obr7EmrpiirU\nn1RfZEh/au5TdVmB6sq9KnBas10qAAAAMCOEOixKJsNQsNitYLFb8aHRybYIXVG93Taot9sGVVrk\nVH3QqzK/SyY2VgEAAEAOI9Rh0XM7rDq+zq9jagrV2ZNQc2dEof6kQv1JOe0W1ZV7VFPmkdPOvy4A\nAADIPXxKBfYxm0yqKi1QVWmBBuMjaumMqC0c0849/Xpz74DKi12qC3oV8DloiwAAAICckfZQNz4+\nrksvvVRlZWW65557NDAwoBtvvFHt7e2qrKzUxo0b5fP50l0GcFR8bptOXFqi4+r8agvH1NIVVUdP\nXB09cRU4raoLelVTWiCblabmAAAAyK60b/X34x//WEuWLJl63NjYqNWrV+uJJ57Q6tWr1djYmO4S\ngFmzWkyqD3r13pMqdPaJFaou9Sg5PKbXmnr1v7/bq1feCqs/OqxUKpXtUgEAALBIpTXUdXV16amn\nntJll102dWzr1q1av369JGn9+vXasmVLOksA5oVhGPJ7HXrX8oDOO61GK+qL5bBbtLc7qqdfbdfT\nr3ZoT1dUY+MT2S4VAAAAi0xal19+/etf10033aR4PD51rLe3V6WlpZKkQCCg3t7eI56nqMgliyX9\ny9wCAU/ar4GFoaqiUKtSKXX1JrSrtV/toZje6oioORRTfYVPy6oLD9vUnHGGTGGsIVMYa8gUxhoy\nJd/GWtpC3ZNPPim/368VK1bopZdeOuRrDMOY0YYT/f2J+S7vIIGAR+FwNO3XwcJikXRslU91Abda\n9jU1376zS9t3dqnY51B90KuKYrdMpslxzjhDpjDWkCmMNWQKYw2ZkqtjbbqgmbZQ98orr+g3v/mN\nnnnmGQ0PDysWi+mzn/2siouLFQqFVFpaqlAoJL/fn64SgIxx2i06trZIy6sL1dmXUEtnROGBpHoH\nh2S3mVVb5lFdeX79Hx8AAADkByOVgR0eXnrpJd1333265557dOedd6qoqEgbNmxQY2OjBgYG9LnP\nfW7a92ciKedqIkf+iiVH1dIZ0d5QTCOj4zIMQ0tr/Sp2W1Va5KSpOdKKv2nIFMYaMoWxhkzJ1bGW\nlZm6w9mwYYM+9alP6eGHH1ZFRYU2btyY6RKAjChwWrWioVjH1Bapoyeu5s6IOsIx7WoZlsthVV25\nR7VlHtlttEUAAADA7GVkpm6umKnDQmG2W7XttQ61heMaH5+QyWSootituqBHxV6ammP+8DcNmcJY\nQ6Yw1pApuTrWcmqmDljM/F6HVi4LaEW9X62hydm7tnBMbeGYvG6b6sq9qi51y5qB3V4BAACwMBDq\ngCywWsxqqPCqPuhRb2RILZ1RdfTGtWN3j15v6VNVoEB1QY8KD9MWAQAAANiPUAdkkWEYKvE5VeJz\namhkTHu7Y2rpiqqlK6KWroj8Xofqyj2qKHHLYjZlu1wAAADkIEIdkCMcNoveUV2opVU+hfqTau6M\nKNSfVF9kSK8196mmtEB1Qa8KnNZslwoAAIAcQqgDcozJMFTud6nc71J8aFQtXVHt7Y7q7fZBvd0+\nqEChU/VBr8qLXbRFAAAAAKEOyGVuh1XH1/l1TE2hOnsTat7X1Dw8kJTDZplsi1DukdPOv8oAAACL\nFZ8EgTxgNplUFShQVaBAkfiIWroiag3F9Mbefr3VOqDyYpfqyj0KFDppiwAAALDIEOqAPON12/TO\nJSU6rs6vtnBscufMnrg6euJyO62qL/equqxAdittEQAAABYDQh2Qpyxmk+rKvaot86g/OqyWrqja\nwzG91tyrnXv6VFFSoPqgR0UeO7N3AAAACxihDshzhmHI73XI73VoRb1fe0MxtXRG1BqKqjUUla/A\nrvqgR1WBAtoiAAAALECEOmABsVnNWlrp05IKr8KDQ2rpjKirN6FXd/XoT819qi4tUF25V163Ldul\nAgAAYJ4Q6oAFyDAMlRY6VVroVHJ4THu6omrpiqqpI6KmjoiKfQ7Vl3sVLHHJbGL2DgAAIJ8R6oAF\nzmm36JjaIr2jplBdvQm1dE02Ne8dHJK92ayaMo/qyz1yOWhqDgAAkI8IdcAiYTIMVZS4VVHiViw5\nqpauiPZ2x7SrdUBvtw2qtGiyqXlpkZOm5gAAAHmEUAcsQgVOq1bUF+uYmiJ19MTV0hVVd19C3X0J\nuRxW1ZV7VFNWIIeNPxEAAAC5jk9swCJmMZtUU+ZRTZlHg7FhNXdG1RaO6fWWPr2xt18VxW7VlXtU\n7HPQFgEAACBHEeoASJJ8BXadtMyu4+uL1BqKq6UrorZwTG3hmDwum+qCHtWUFshqoak5AABALiHU\nATiA1WJWQ4VX9UGPeiNDaumMqqM3rj/u7tXrLf2qCrhVH/SqsMCe7VIBAAAgQh2AwzAMQyU+p0p8\nTg2PjGtP92RbhD37voo8dtUHvaoocdPUHAAAIIsIdQCOyG4z6x3VhVpa5VO4P6nmzoi6+5N65a2w\n/tjUq5oyj+rKPfK4aGoOAACQaYQ6ADNmMgyV+V0q87uUGBqdnLnrjmp3+6B2tw8qUOhUXdCroN8l\nk4mNVQAAADKBUAdgVlwOq46r80+2ReiNq6UzqvBAUuGBpBw2i2rLJ2fvnHb+zAAAAKQTn7YAzInJ\nZKgqUKCqQIEiiRG1dEbVGorqzb392tU6oDK/S/VBjwKFTtoiAAAApAGhDsC88bpseueSYh1XV6T2\ncFzNnRF19sbV2RuX22lVfblX1WUFsltpiwAAADBfCHUA5p3FbFJtuUc1ZQUaiI2ouTOi9nBMrzX3\naueePlWUTLZFKPLYmb0DAACYI0IdgLQxDENFHruKPAGtqPdrbyimls6IWkMxtYZi8hXYVVfuUVWg\nQFYLbREAAABmg1AHICNsVrOWVvq0pMKr8OCQWjoj6upN6A9v9+j1lj5VBQpUH/TK66YtAgAAwNEg\n1AHIKMMwVFroVGmhU8nhMe3d19S8uTOi5s6Iir0O1QW9qihxyWxi9g4AAOBICHUAssZpt2h5TZGW\nVRequy+h5s6IQv1J9UaG9FqTebKpedAjt8Oa7VIBAAByFqEOQNaZDEPBYreCxW7FkqNq6YqotTum\nXW0Dert9UKWFTtUFPSrzu2RiYxUAAIADEOoA5JQCp1Ur6ot1bG2ROnomZ++6+xPq7k/IZZ9sal5b\n7pHDxp8vAAAAiVAHIEeZTSZVlxaourRAg7FhNXdF1RaKaeeefr25d0DBErfqyj0q8TloiwAAABY1\nQh2AnOcrsOukpXYdX+dXW3iyLUJ7OKb2cEwel011+3riWS00NQcAAIsPoQ5A3rBaTKoPelVX7lFf\nZFjNnRF19Mb1x6Zevb6nX1UlbtXta2oOAACwWBDqAOQdwzBU7HOo2OfQ8Mi49oaiaumMak/35Feh\nx676cq8qA25ZzLRFAAAACxuhDkBes9vMWlZVqKWVPoUGkpMbq/QltX1XWK819062RSj3yOOiqTkA\nAFiYCHUAFgTDMFRW5FJZkUuJoTHt6YpoT3dMu9sHtbt9UIFCp+rKPQoWu2UysbEKAABYOAh1ABYc\nl8OiY+v8Wl5TpM7euFq6ogoPJBUeSMphs6i2rEC15V65HPwJBAAA+Y9PNAAWLJPJUGWgQJWBAkUT\nI2rpimpvd1Rvtg7orbZBlfmdqg96VVropC0CAADIW4Q6AIuCx2XTCQ2TTc3bw3E1d0XU1ZtQV29C\nbodVdUGPako9sttoiwAAAPILoQ7AomIxm1Rb7lFtuUf90WG1dEbU1hPXn5r7tHNPvypL3Kor98rv\ntTN7BwAA8gKhDsCiVeSxq8gT0PH1frWGYmrpiqo1FFNrKCaf26a6oFdVgQJZLbRFAAAAuYtQB2DR\ns1nNWlLpU0OFVz2DQ2rpiqqzJ64/vN2jPzX3qaq0QPVBr3xu2iIAAIDcQ6gDgH0Mw1Cg0KlAoVPJ\n4THt7Y5qT1dULZ0RtXRG5Pc6VB/0qqLEJbOJ2TsAAJAbCHUAcAhOu0XLa4q0rLpQ3X0JtXRGFRpI\nqi8S0mtNZtWUTd6XV+C0ZrtUAACwyBHqAGAaJsNQsNitYLFb8aFRtXROtkXY1TagXW0DKityqS7o\nUZnfJRMbqwAAgCwg1AHADLkdVh1f79cxtYXq6EmopTOi7v6EuvsTctotqiv3qKbMI6edP60AACBz\n+OQBAEfJbDKpurRA1aUFGoyPqKUzotZQTDv39OvNvQMqL3apPuhVic9BWwQAAJB2hDoAmAOf26YT\nl5bouDq/2sIxtXRG1NETV0dPXB6XTXXlHlWXFshmpak5AABID0IdAMwDq8Wk+qBXdfuamjd3RtTe\nE9cfm3r1ekufKgOTbRGKPPZslwoAABYYQh0AzCPDMOT3OuT3OrSiYVx7u6NTm6vs7Y6q0GNXfblX\nlQG3LGbaIgAAgLkj1AFAmtitZi2rKtTSSp9CA0m1dEbV1ZfQ9l1hvdbcq+pSj+qCHnldNDUHAACz\nR6gDgDQzDENlRS6VFbmUGBrTnn1NzZs6BtXUMagSn1N1QY8qit0ymdhYBQAAHB1CHQBkkMth0bG1\nRVpeXajOvsm2COGBpHoGk3LYLKopK1BduUcuB03NAQDAzBDqACALTCZDlSVuVZa4FU2MqKVr8p67\nt1oHtKttUGVFTtUHvQoUOWlqDgAApkWoA4As87hsOqGhWMfWFqk9HFdLV0RdfQl19SXkclhVV+5R\nbZlHdhttEQAAwMEIdQCQIyxmk2rLPard1xahpSuitnBcr7f06Y29/aoodqsu6FGxl6bmAADgzwh1\nAJCDijx2FXkCWlHv195QTC2dUbWFY2oLx+R121RX7lV1aYGsFtoiAACw2BHqACCHWS1mLanwqSHo\nVe/gkJq7oursiWvH7h693tKnqkCB6oMe+Qpoag4AwGJFqAOAPGAYhkoKnSopdGpoZEx7uibbIrR0\nRdTSFZHf61BduUeVAbfMJmbvAABYTNIW6oaHh3XllVdqZGRE4+PjOv/883XDDTdoYGBAN954o9rb\n21VZWamNGzfK5/OlqwwAWHAcNouW1xRpWXWhuvsSaumKKtSfVF9kSK8196mmrECnuJm5AwBgsTBS\nqVQqHSdOpVJKJBJyu90aHR3Vhz/8Yd1yyy164oknVFhYqA0bNqixsVGDg4O66aabpj1XOBxNR4kH\nCAQ8GbkOFjfGGdIlPjQ61RZheGRcbrddbptJdeVelRe7aIuAtOHvGjKFsYZMydWxFgh4Dvtc2tbo\nGIYht9stSRobG9PY2JgMw9DW/7+9e49tq777OP45iRPH1yROHDshN7e03ErblZaxP8a0dqVACJTC\npJYNJC5CXMSEEGJjmzZNAgRMmqZN06RNmqqBQII0hEsB6SEVLYhLH7qx0I7QUuImbZM4cZzYzrVJ\nz/NHIFsfCnVL45Njv19SpSY+tT5H+dbHn5xz/Gtv18aNGyVJGzdu1BtvvDFfEQAgb3hKinRRY0BX\nrKnT6vOqVFXuUiwxrt0f9+t//rdHnYcSGp+ctjomAACYB/N6T93MzIw2bdqk7u5u3XTTTVqxYoXi\n8biqqqokScFgUPF4/JTPU17ulsMx/+szfV37Bc4W5gzzLRyavaR9+IKwDvQkFO1Nqic+psND46oN\nerWkvkyhgJtlEXDW8LqGbGHWkC12m7V5LXWFhYV68cUXlUwmde+992r//v0nPG4YRkZvKhKJsfmK\nOGehnmZFbmHOkC3BoE/HJqbUGPSoNuDS4YG0unpT6uwaVGfXoLyuIjVW+1Vf5VVxEYua48zxuoZs\nYdaQLQt11r6uaGbl0y/9fr++/e1v66233lJFRYVisZiqqqoUi8UUCASyEQEA8pajcPbeuobQ7KLm\nXb0pHR1Ma+9ncX0cHdI5Qa8awz6V+5ycvQMAwIbm7Z66oaEhJZNJSdLExITeeecdLVq0SGvXrlVb\nW5skqa2tTevWrZuvCACA/2IYhgL+El1yXlBXXFqvZZEKlTgd6u5Pade/jmrnh0cV7Utqeua41VEB\nAMBpmLczdbFYTD/72c80MzMj0zR15ZVX6vvf/75Wrlyp+++/Xy0tLaqpqdHvf//7+YoAAPgKzqJC\nnVtbqsXn+DUwPK5oX0p98TF9eGBQ+7qGVFflVWO1X353sdVRAQDAKczbkgZnE0saIFcwZ8iWM5m1\n8cnpzxc0T2liavaTMitKSxSp9qumwqOCAi7NxJfxuoZsYdaQLQt11iy/pw4AsPC5nA6d31CupXVl\n6hsaU1dvUgPD44qPTMhZXKiGkE+NYZ/cJUVWRwUAAP+FUgcAOEFBgaGaSo9qKj1Kjx9TtDep7lha\n+3uGdeDwiELlLjVW+1VV7mJRcwAAFgBKHQDgK3ldRVq2qELnN5Tr6ODo7L13Q2PqGxqTu6RIjWGf\nGkI+OYtZFgEAAKtQ6gAAp+QoLFB9yKf6kE/D6UlFe1PqGUjr39EhdXYnVFPhUWO1TxX+EpZFAAAg\nyyh1AIDTUuZ1auUSpy6KlKsnNqqu3qQOD6R1eCAtv6dYjWG/6qo8KnJw9g4AgGyg1AEAzkiRo1CL\navyKVPsUT04o2pvS0fioOg4Oal90SHVBrxqrfSrzOq2OCgBATqPUAQC+EcMwVFnqUmWpSxNT0+ru\nTyval1K0L6loX1IBf4kawz7VVHrkKCywOi4AADmHUgcAOGtKih1aWlemc2tLFUuMK9qbVH9iXEPJ\nCe3tGlL954uae10siwAAwNlCqQMAnHUFhqFwwK1wwK2xiWOK9qV0qD+lT4+M6NMjIwqWuRSp9isc\ncLOoOQAA3xClDgAwr9wlRbqwMaDz68t1ND46t6j5wPC4SoodagjPLmrucnJIAgDgTHAEBQBkRUGB\nodqgV7VBr5KjU4r2JdUTS+uT7oQO9AwrFHArUu1TsMzFsggAAJwGSh0AIOv8nmItX1ypCxsDOjyQ\nVrQ3pd74qHrjo/K4ihQJ+1UX8spZxLIIAACcCqUOAGAZR2GBGsN+NYR8SqQmFe1L6chAWnu74vr4\n0JBqKr2KVPtU7nNy9g4AgK9AqQMAWM4wDAX8JQr4S7QsElB3LK1ob1I9sZR6YimVep1qDPtUV+Vl\nWQQAAP4fSh0AYEEpLirUueeUanGNXwMjE4r2JtUXH9O/Ph3Uv6NDqg16Fan2y+8ptjoqAAALAqUO\nAIzUpOwAAAs2SURBVLAgGYahqjKXqspcGp+c1qHPl0Xo6k2qqzepCn+JItV+VVe6VVjA2TsAQP6i\n1AEAFjyX06HzG8q1tL5MffExRfuSiiXGFU9OyNlVqPrQ7LIInhIWNQcA5B9KHQDANgoMQzWVHtVU\nepQeP6ZoX1Ld/Wkd6BnWp4dHVFXuUmPYp1DArQI+WAUAkCcodQAAW/K6irQsUjG7qPngqKJ9KfUP\njal/aExu5+yi5g1hn0qKOdQBAHIbRzoAgK05CgtUH/KpPuTTSHpSXb0pHR5I6+NDCX3SPazqSo8i\nYZ8qSktYFgEAkJModQCAnFHqdWrlEqcuigTUE0sr2pfUkYG0jgyk5XMXq7Hap/oqr4ocLGoOAMgd\nlDoAQM4pchRoUY1fkWqf4skJRXtTOhof1UcH4/p3NKHaoEeNYb/KfU6rowIAFojDA7P3aM8YBSo0\nj2tJXZlqg16rY2WEUgcAyFmGYaiy1KXKUpcmp2Z0qD81uzTC53/KfU41hv2STH12NKnU2DH53EW2\nOpADAL65wwNpfdAZkyR5PE6NjE7NfW2H4wGlDgCQF5zFhVpaV6YltaWKJcbV1ZdU/9C4dn54RP2J\nMZV6nHIWFyqRnlR3LK0LG8sVKnfPWx7TnLenzqrk5IwSiTGrY2SVqRz54Z3EQp7L4YnpvJu1TC3k\nn9vZkI3/c3s+GdDo+DFJUmHRfy7RP9AzTKkDAGChMQxDoYBboYBbYxPH1PZWlwzD0FBq4oTthpIT\nilT7LUppHx6PU6Ojk1bHQB5g1jCfuo4m58rjjClV+mcvz0+NHbMyVsYodQCAvOUuKZLXVaTFNaUa\nnTimmeP/+W2wYUirlgYtTGcPgYBHQ0OjVsfI6U82zd0902ntXKDco6GE9bN2OnL7Z5dbe2eaUvrz\nM3UV5W5NTc7+3ecusjJWxih1AIC85nMXaWR0Sl7XiQfuUk+x6kM+i1LZRzDok7eowOoYyAPBoE9u\nR24VCSwcay6omruHrshRoKnPTwovqSuzMFXmeBUGAOS1rzpg2+VADgD45mqDXq0+v0qlnmIZhqFS\nT7FWn19li/vpJM7UAQDy3BcH7AM9w3z6JQDksdqgV7VBr4JBnwYGUlbHOS2UOgBA3vviQA4AgB1x\n+SUAAAAA2BilDgAAAABsjFIHAAAAADZGqQMAAAAAG6PUAQAAAICNUeoAAAAAwMYodQAAAABgY5Q6\nAAAAALAxSh0AAAAA2BilDgAAAABsjFIHAAAAADZGqQMAAAAAGzNM0zStDgEAAAAAODOcqQMAAAAA\nG6PUAQAAAICNUeoAAAAAwMYodQAAAABgY5Q6AAAAALAxSh0AAAAA2BilDgAAAABsLK9K3a5du7Rh\nwwatX79ef/nLX770uGmaeuSRR7R+/Xo1Nzdr3759FqRELjjVrL300ktqbm5Wc3OzNm/erM7OTgtS\nIhecata+0NHRoQsvvFCvv/56FtMhl2Qya++//76uu+46NTU16cc//nGWEyJXnGrWUqmU7rrrLl17\n7bVqamrStm3bLEgJu3v44Yf1ne98R9dcc81JH7ddLzDzxPT0tLlu3Tqzu7vbnJycNJubm80DBw6c\nsM2bb75p3n777ebx48fNf/7zn+aNN95oUVrYWSaztmfPHnN4eNg0zdm5Y9ZwJjKZtS+2u/nmm807\n7rjDfO211yxICrvLZNZGRkbMq666yjxy5IhpmqY5ODhoRVTYXCaz9uc//9l88sknTdM0zXg8bq5Z\ns8acnJy0Ii5sbPfu3ebevXvNpqamkz5ut16QN2fqOjo61NDQoLq6OhUXF6upqUnt7e0nbNPe3q6N\nGzfKMAytXLlSyWRSsVjMosSwq0xmbdWqVSotLZUkrVy5Un19fVZEhc1lMmuS9NRTT2nDhg2qqKiw\nICVyQSaz9vLLL2v9+vWqqamRJOYNZySTWTMMQ6OjozJNU6OjoyotLZXD4bAoMexqzZo1c+/FTsZu\nvSBvSl1/f7/C4fDc16FQSP39/V+7TTgc/tI2wKlkMmv/raWlRZdffnk2oiHHZPq69sYbb2jLli3Z\njoccksmsRaNRJZNJ3Xzzzdq0aZPa2tqyHRM5IJNZ+9GPfqSDBw/qu9/9rq699lr94he/UEFB3ryl\nRZbYrRfwaw3AQu+9955aWlr0zDPPWB0FOerRRx/Vgw8+yBsezLuZmRnt27dPW7du1cTEhDZv3qwV\nK1YoEolYHQ055u2339YFF1ygv//97+ru7tatt96q1atXy+v1Wh0NsEzelLpQKHTCJW79/f0KhUJf\nu01fX9+XtgFOJZNZk6TOzk798pe/1F//+leVl5dnMyJyRCaztnfvXj3wwAOSpEQioZ07d8rhcOgH\nP/hBVrPC3jKZtXA4rLKyMrndbrndbq1evVqdnZ2UOpyWTGattbVVd955pwzDUENDg2pra/XZZ59p\n+fLl2Y6LHGa3XpA3v7q9+OKLFY1G1dPTo6mpKW3fvl1r1649YZu1a9eqra1Npmnqww8/lM/nU1VV\nlUWJYVeZzNrRo0d133336cknn+QND85YJrO2Y8eOuT8bNmzQr3/9awodTlsms7Zu3Trt2bNH09PT\nGh8fV0dHhxYvXmxRYthVJrNWXV2td999V5I0ODiorq4u1dbWWhEXOcxuvSBvztQ5HA796le/0h13\n3KGZmRndcMMNWrJkiZ599llJ0pYtW/S9731PO3fu1Pr16+VyufTYY49ZnBp2lMms/elPf9Lw8LB+\n85vfSJIKCwvV2tpqZWzYUCazBpwNmcza4sWL5+5xKigo0I033qilS5danBx2k8ms3XPPPXr44YfV\n3Nws0zT14IMPKhAIWJwcdvPAAw9o9+7dSiQSuvzyy3Xfffdpenpakj17gWGapml1CAAAAADAmcmb\nyy8BAAAAIBdR6gAAAADAxih1AAAAAGBjlDoAAAAAsDFKHQAAAADYGKUOAJBXRkZGtHz5cj3yyCNz\n3/vjH/+oJ5544pT/trW1VT/5yU/mMx4AAKeNUgcAyCuvvPKKVqxYoe3bt2tqasrqOAAAfGOUOgBA\nXtm2bZvuuecenXfeeWpvb//S462trbr11lt111136eqrr9Ytt9yi/v7+ucfT6bTuv/9+NTU1afPm\nzRoYGJAkffLJJ7rpppt0/fXX6+qrr9bWrVuztUsAgDxHqQMA5I3Ozk4NDw/rsssu06ZNm7Rt27aT\nbrdnzx499NBDevXVV3XppZfq0UcfnXvso48+0k9/+lNt375d5557rp5++mlJ0jnnnKOtW7fqhRde\n0PPPP6/nnntOBw8ezMp+AQDyG6UOAJA3WlpadN1118kwDF1xxRXq6Og44SzcFy655BItWrRIkvTD\nH/5Q77333txjq1atUnV1tSRpxYoV6u7uliRNTEzo5z//uZqbm7VlyxbFYjF1dnZmYa8AAPnOYXUA\nAACyYWpqSq+88oqKi4v14osvSpKOHTum1tbW03oep9M59/fCwkLNzMxIkn73u98pGAzq8ccfl8Ph\n0G233abJycmztwMAAHwFztQBAPJCe3u7IpGIdu3apR07dmjHjh3629/+phdeeOFL2/7jH/9QNBqV\nNHsP3mWXXXbK50+lUgqHw3I4HNq/f78++OCDs70LAACcFGfqAAB5Ydu2bWpubj7he9/61rd0/Phx\n7d69W8uWLZv7/qpVq/TEE0/o0KFDqqys1G9/+9tTPv/dd9+thx56SC0tLYpEIlqzZs1Z3wcAAE7G\nME3TtDoEAAALRWtrq95880394Q9/sDoKAAAZ4fJLAAAAALAxztQBAAAAgI1xpg4AAAAAbIxSBwAA\nAAA2RqkDAAAAABuj1AEAAACAjVHqAAAAAMDG/g/wZKesdWdUagAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fb419510828>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x = np.array(enc_dims) / 58.\n",
"plt.figure(figsize=(15, 7))\n",
"\n",
"y = np.array(l2_train)\n",
"plt.plot(x, y, marker='o', alpha = 0.5, label = \"l2ratio_train\")\n",
"\n",
"plt.title(\"l2ratio_train vs Alpha\")\n",
"plt.xlabel(\"Alpha\")\n",
"plt.ylabel(\"l2ratio\")\n",
"plt.legend(loc = 'best')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load Test data"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"DATA_FOLDER = pathlib.Path('/home/radi4/data/data/test')\n",
"all_files_data = []\n",
"all_files_names = []\n",
"bad_channels = []\n",
"for eeg_file_path in DATA_FOLDER.glob('*.h5'):\n",
" all_files_names.append(str(eeg_file_path))\n",
" all_files_data.append(read_eeg_file(str(eeg_file_path)))\n",
" bad_channels.append(find_bad_channels(all_files_data[-1]).copy())\n",
"channels_count = all_files_data[0].shape[0]\n",
"all_padded_data = pad_all_eeg_files(all_files_data)"
]
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"enc_dims = [1, 2, 6, 29, 58]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"l2_loss_by_files = []\n",
"for enc_dim in enc_dims:\n",
" autoencoder = torch.load(\"./Petr/Petr_dense_{}.pt\".format(str(enc_dim)))\n",
" autoencoder = autoencoder.cuda()\n",
" adds = []\n",
" for i in range(len(all_files_data)):\n",
" start = 0\n",
" res = np.zeros((0, 58))\n",
" while (start < all_files_data[i].shape[1]):\n",
" size = min(500, all_files_data[i].shape[1] - start)\n",
" batch = make_batch(all_padded_data[i], channels_count, size, start + SAMPLES_COUNT_DEFAULT // 2)\n",
" start += size\n",
" res = np.concatenate([res, predict(batch, autoencoder)], axis = 0)\n",
" res = res.T\n",
" add = np.sum((np.delete(res, bad_channels[i]) - np.delete(all_files_data[i], bad_channels[i]))**2)\n",
" print(i, add, all_files_names[i])\n",
" adds.append(add)\n",
" \n",
" l2_loss_by_files.append(adds.copy()) \n",
" print(enc_dim)"
]
},
{
"cell_type": "code",
"execution_count": 216,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"bad_files = []"
]
},
{
"cell_type": "code",
"execution_count": 217,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n",
"l2_test = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n",
"l2_test = np.sqrt(l2_test) * 100"
]
},
{
"cell_type": "code",
"execution_count": 219,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA4cAAAGrCAYAAABzHOLyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XtclHXe//H3HBw2UQQNMI1bVzM7eaAEPC0W3mBK5mGh\nX7VW0sEyW0O7pTyspqYm64ap7a6ue7DDtoml7kqtB9wSzDytLrp2WNv1rEMREqIyAtfvD+/m1pgL\nGJgRkNfz8ejxyOs714cP45cZ3n6/c10WwzAMAQAAAACaNGt9NwAAAAAAqH+EQwAAAAAA4RAAAAAA\nQDgEAAAAAIhwCAAAAAAQ4RAAAAAAIMIhAKAeJSYmavv27Vfs602fPl2vvfaa6fjixYv1P//zPzWu\n17VrVx0+fNgXremFF15QRkaG6XhGRoZiYmLUr18/nThxQpGRkSovL5ckPfTQQ8rMzPRJHwCApotw\nCADwi7i4OH388ceXHXvvvff0wAMPuP+clZWlmJiYKuscO3ZMXbt2VVlZWZ17mjVrlsaNGydJ2r59\nu2JjY+tc80o4ceKEfv/73+v999/X1q1b1a5dO+3Zs0c2m+2K9dC1a1f17NlTkZGR+tGPfqR58+a5\nw2lVvA3cAID6Y6/vBgAAQNVOnDih4OBgtWnTpl77WLt2rTp06KAvv/xSDz/8sDp27HhZ2K8NwzBk\nGIasVv69GgDqG6/EAIB6c+nqYl5enkaOHKnbb79dffv21bx58yRJo0aNkiRFRUUpMjJSe/bsuaxG\naWmpunfvrm+++UaS9Ktf/Uq33HKLzpw5I0lauHCh5syZI+n/tm6ePXtWTzzxhPLz8xUZGanIyEg5\nnU5J0oULF5SWlqbIyEglJiZq3759VX4PH330kQYOHKiYmBjNnz9fFRUVkqQjR47o4YcfVkxMjGJi\nYvTcc8/p22+/dZ934MABjRgxQpGRkUpNTVVpaanH+h9//LEeffRRd68vvPBCtaupq1at0uDBgxUV\nFaXHHntMx48fl3QxiM2dO1d9+vTR7bffrqFDh+qLL76o8vvzpHPnzrrjjjv0r3/9S5LkdDr105/+\nVL1791ZcXJxef/11SdKWLVu0dOlSffDBB4qMjNS9994r6eI22IyMDN1///3q0aOHjh496nUPAADf\nIxwCABqEOXPm6OGHH9bf//53bdy4UYMHD5Ykvfnmm5KknTt3as+ePYqMjLzsvICAAHXr1k07d+50\nP65du3bavXu3+8/R0dGXndO8eXP95je/UVhYmPbs2aM9e/YoPDxckrR582YlJiZq165diouL0+zZ\ns6vse+PGjXr33Xe1evVqbd68We+++66ki0HsySefVE5Ojj744AOdOnVKixcvliS5XC6NGzdOw4YN\n044dO3T33Xdrw4YNHuv37dv3sl5ffvnlKvvZtGmTli5dqiVLlmjbtm2644479Nxzz0mScnNztWvX\nLq1fv167d+/WwoULFRwcXGU9Tw4ePKjdu3fr5ptvVkVFhcaOHauuXbtqy5YtWrFihVasWKGcnBzF\nxsbqySef1ODBg7Vnzx79+c9/dtdYu3atZs+erb///e9q166d1z0AAHyPcAgA8Jtx48apV69e7v9m\nzpxp+li73a4jR47om2++UWBgoHr27FnjrxMVFaWdO3eqrKxMn3/+uR566CHt3LlTpaWl2rdvn3r1\n6lXjWnfccYcGDBggm82mYcOG6bPPPqvy8U888YSCg4PVrl07Pfzww1q3bp0kqUOHDurXr58cDoda\nt26tlJQUd4D9xz/+oQsXLuiRRx5Rs2bNdPfdd6tbt2417rEqf/rTnzRmzBh17txZdrtdTz31lD79\n9FMdP35cdrtdJSUl+ve//y3DMNS5c2eFhYXVuPaIESMUFRWlp556SklJSfrxj3+sffv26ZtvvtEz\nzzwjh8OhiIgI3XfffXr//ferrdWlSxfZ7XY1a9asrt82AMAH+MwhAMBvXnvtNfXt29f95/fee8/0\nqppz5szRokWLNHjwYF1//fV65plndNddd9Xo60RHR2vevHk6cOCAbrzxRvXr109Tp07V3r171aFD\nB4WEhNS452uvvdb9/z/4wQ9UWlqqsrIy2e2e3zKvu+469/+3b99e+fn5kqSvv/5ac+bM0a5du1RS\nUiLDMBQUFCRJys/PV3h4uCwWi/tcX62enThxQnPnztX8+fPdxwzDkNPpVJ8+ffSTn/xEs2bN0vHj\nx5WQkKDnn39eLVq0qFHt1atXq0OHDpcdO378uPLz8y8L4OXl5dUG8kufNwBAw0A4BAA0CB07dtQr\nr7yiiooKbdiwQePHj9f27dsvC1BmIiMj9Z///EcbN25UVFSUbrjhBp04cUIfffSRoqKiPJ5Tk7o1\ncfLkSXXp0kXSxWD23UrcK6+8IovFor/85S8KDg7Wpk2bNGvWLElSaGionE6nDMNw93HixAlFRETU\nuZ/rrrtOTz31lPvzfd/38MMP6+GHH1ZBQYFSU1O1fPlypaam1unrXX/99abbYs2eZ189/wAA32Fb\nKQCgQVi7dq2++eYbWa1W9wqb1WpV69atZbVaq7xoyTXXXKPbbrtNb731lvvzhZGRkfrTn/5kGg7b\ntGmj06dPq7i4uE59//a3v1VRUZFOnjyp119/XUOGDJEklZSUqHnz5mrZsqWcTqeWL1/uPqdnz56y\n2+16/fXXdeHCBW3YsKHaC9/U1P33369ly5a5LxZTXFysDz74QNLFi/58t6X1mmuukcPhqPNVQrt3\n767AwEAtW7ZM58+fV3l5ub744gvl5eVJuvg8Hz9+3H2hHgBAw0U4BAA0CDk5OUpMTFRkZKTmzJmj\njIwM/eAHP9A111yjp556Sg888IB69eqlvXv3ejw/KipKZWVl6t69u6SLW01LSkpMw2Hnzp2VmJio\n//7v/1avXr3cVyv11sCBAzVy5EgNHz5cd955p5KSkiRJzzzzjA4cOKBevXppzJgxSkhIcJ/jcDi0\nePFirV69WtHR0Xr//fcVHx9fq6//ffHx8Xr88cc1ceJE3X777brnnnu0ZcsWSRcD67Rp0xQdHa27\n7rpLwcHBeuyxxyRJv/71r/X44497/fVsNpt+/etf67PPPtPAgQPVu3dvTZs2zX212LvvvluSFBMT\noxEjRvjkewQA+IfFMAyjvpsAAAAAANQvVg4BAAAAAIRDAAAAAADhEAAAAAAgwiEAAAAAQE3sPodf\nfVW3y5XXh5CQ5iosPEsNalzVNRpCD9SgBjWoQQ1qUIMa9VHjSgsNbWk6xsphA2e326hBjau+RkPo\ngRrUoAY1qEENalCjPmo0JIRDAAAAAADhEAAAAABAOAQAAAAAiHAIAAAAABDhEAAAAAAgwiEAAAAA\nQIRDAAAAAIAIhwAAAAAASfb6bgAAAAAA/K15+tzLDwQGqHlJaa3rnU2bUu1j5s6dqY8/zlVISIje\neGPlZWP79+9TVtZaPf/8tMuOx8ZGq1OnGyRJ4eHhmj8/Q5K0a9cO/fKXr6qiwtA111yjqVNf1PXX\nR9S6f08IhwAAAADgB0OGDNWPf/z/9NJL0yuNbd/+sWJi+lQ6HhAQoD/84Y+Vji9Y8LJefvkX6tjx\nh3rvvUytWPFbTZ36ok/7ZVspAAAAAPhBz563KygoyOPYrl071KtXTI1rWSxSSUmJJKmk5IyuvTbU\nJz1eipVDAAAAALiCTp8+LbvdrhYtWlQac7lcevTRn8hub6ZRo0YrNvZOSdILL/xMkyY9q4CAAAUG\nBmrp0t/7vC/CIQAAAABcQTt2fKLo6N4ex1at+otCQ8N0/PgxPfvsWHXufIPat79e77zzR/3856/q\n1ltv0x//+LoWL87QCy/8zKd9sa0UAAAAAK6g7du3evy8oSSFhoZJktq3v16RkXfoiy8+U2FhoQ4e\n/EK33nqbJCkuLkH79+f5vC/CIQAAAABcIYZh6ODBg+rSpWulsW+//VYul0vSxa2n+/b9Qx07dlLL\nli1VUnJGR44cliTt2vWJOnTo6PPe2FYKAAAA4Kr3/VtPBIa21Nmviv36NWfMmKK9e3fr9OnTGjFi\niB57bIxuuOFG3XhjV1kslkqPP3z4P/r5z+fKYrHKMCo0atQj+uEPO0mS0tKmadq0NFksVrVs2VKT\nJ1e+AmpdEQ4BAACAq0TGsO2mYw6HXS5XmcexCWtrftVM1NzMmXMrHfvDH5abbint1q2HXn/9HY9j\nAwbcpQED7vJpf99HOAQAAACAK2T06MfruwVTfOYQAAAAAEA4BAAAAAAQDgEAAAAAIhwCAAAAAEQ4\nBAAAAACIq5UCAAAAaALSd1x+W4nAwACVlJTWul5a9JQqx53OU3rppRkqLPxGkkX33jtC9933gMfH\nfv3115ozZ4YyMl677HhS0lA1b95cVqtNNptNv/3tG5Kkf/3rc/385/Pkcrlks9n03HPP65Zbbqv1\n9/IdwiEAAAAA+JjNZtczz0xQ16436ezZEj366EOKiopx39T+Utu3f6zoaM/3Ply0aKmCg4MvO/bL\nXy5SSsoT6tOnn7Zty9Uvf7lIS5Ysq3PPbCsFAAAAAB+79tpr1bXrTZKk5s0D1bFjR339db7Hx27f\nvk29e/etcW2LxaKzZ0skSWfOnNG114bWvWGxcggAAAAAfnXy5Al98cXnHrd+lpeX68iRwx5XFC0W\ni1JTn5bVatWwYSM1bNhISdL48c9p4sRn9Nprr6qiokK//vXvfNIn4RAAAAAA/OTs2bOaOjVNzz77\nnAIDW1QaP3Bgv2655VaP5/7yl8sVGhqmwsJvlJo6Th06dFTPnrdrzZpVGj9+ou68c6Cyszdq3rzZ\nevXVX9a5V7aVAgAAAIAflJWVadq0NCUk3K0BA+I8PuaTTz5WTIznLaWhoWGSpJCQ1oqNvVMHDvxT\nkvTBB+vc9eLi/luffvpPn/RLOAQAAAAAHzMMQ/PmzVKHDj/U/fePMn3c7t07FRUVXen4uXPn3J8r\nPHfunHbu3K5OnTpLkq69NlR79ux2n3/99RE+6ZltpQAAAMBVIufo66ZjNptV5eUVHscmKMZfLTUY\n37/1RGhoS331VbHfvl5e3j+0fv376tz5Bo0e/aAk6cknn1afPv3djyksLJTD4VDz5oGVzv/mmwJN\nmTJJ0sXPJcbHD3JftCYtbZpefXWBysvL5XA4lJY21Sc9Ew4BAAAAwMd69Oip3NxdVT5mx45tiorq\n7XGsffvrtWLF26a1f/e7N+vc4/cRDgEAAACgHgwaNKS+W7gMnzkEAAAAABAOAQAAAACEQwAAAACA\nCIcAAAAAABEOAQAAAADiaqUAAAAAmoD0dMdlfw4MlEpKHCaPrl5amqvax8ydO1Mff5yrkJAQvfHG\nStPHff3115ozZ4YyMl5zH3M6T+mll2aosPAbSRbde+8I3XffA7XutyZYOQQAAAAAPxgyZKh+8YvF\n1T5u+/aPFR3d57JjNptdzzwzQW++mally36v997L1H/+829/tSqJcAgAAAAAftGz5+0KCgqq9nHb\nt29T7959Lzt27bXXqmvXmyRJzZsHqmPHjvr663y/9PkdwiEAAAAA1JPy8nIdOXJYP/xhJ9PHnDx5\nQl988bluueU2v/ZCOAQAAACAenLgwH7dcsutpuNnz57V1KlpevbZ5xQY2MKvvRAOAQAAAKCefPLJ\nx4qJ6etxrKysTNOmpSkh4W4NGBDn914IhwAAAABQT3bv3qmoqOhKxw3D0Lx5s9Shww91//2jrkgv\n3MoCAAAAwFXv+7eeCA0N0FdfVX87irqYMWOK9u7drdOnT2vEiCF67LExuuee4e7xwsJCORwONW8e\nWOncvLx/aP3699W58w0aPfpBSdKTTz6tPn36+61fwiEAAAAA+MHMmXOrHN+xY5uionp7HOvRo6dy\nc3f5oy1ThEMAAAAAqAeDBg2p7xYuw2cOAQAAAACEQwAAAAAA4RAAAAAAoBqEw5MnT+qhhx7SkCFD\nlJiYqBUrVkiSTp8+rZSUFCUkJCglJUVFRUXuc5YuXar4+HgNGjRIOTk57uP79+/X0KFDFR8fr5de\nekmGYUiSXC6XUlNTFR8fr+TkZB07dsx9zurVq5WQkKCEhAStXr3affzo0aNKTk5WfHy8UlNT5XL5\n90pDAAAAAHA1qzYc2mw2vfDCC3r//ff1zjvv6I9//KMOHjyoZcuWqU+fPtqwYYP69OmjZcuWSZIO\nHjyorKwsZWVlafny5Zo5c6bKy8slSS+++KJmz56tDRs26NChQ9qyZYskKTMzU0FBQdq4caNGjx6t\nBQsWSLoYQJcsWaKVK1cqMzNTS5YscYfQBQsWaPTo0dq4caOCgoK0atUqvzxBAAAAANAUVHu10rCw\nMIWFhUmSWrRooU6dOsnpdCo7O1tvvPGGJGn48OF66KGHNGnSJGVnZysxMVEOh0MRERHq0KGD8vLy\n1L59e505c0Y9e/Z0n5Odna0BAwZo8+bNeuaZZyRJgwYN0qxZs2QYhnJzc9WvXz8FBwdLkvr166ec\nnBwlJibqk08+0S9+8QtJ0ogRI7RkyRI9+OCDvn+GAAAAfCR9h/ll7QMDA1RSUupxLC16ir9aApqM\n9PTLf/6q+pmribS06n8u586dqY8/zlVISIjeeGNlrb/WleLVrSyOHTumTz/9VD169FBBQYE7NIaG\nhqqgoECS5HQ61aNHD/c54eHhcjqdstvtatu2rft427Zt5XQ63edcd911Fxuy29WyZUsVFhbK6XRe\nds53tQoLCxUUFCS73V6pVlVCQprLbrd58y03CKGhLalBjau+RkPogRrUoAY1/F0jMDCgVuPe9NeY\nng9q+L6GzVb1xkCz8aYwxzz9fFX3M1mTr19VHw8++P/0+OMpev75533yPftbjcNhSUmJxo8frylT\npqhFixaXjVksFlksFp8352uFhWfruwWvhYa21FdfFVODGld1jYbQAzWoQQ1qXIkaVa1SVLWKUdP+\nGtvzQQ3f1ygvrzAds9mspuNNYY59/+erriuHX31VXG0fHTvepJMnT6isrLzO37OvVBVSa3S10gsX\nLmj8+PEaOnSoEhISJElt2rRRfn6+JCk/P1+tW7eWdHF179SpU+5znU6nwsPDKx0/deqUwsPD3eec\nPHlSklRWVqbi4mKFhISY1goJCdG3336rsrKySrUAAAAAAN6rNhwahqGpU6eqU6dOSklJcR+Pi4vT\nmjVrJElr1qzRwIED3cezsrLkcrl09OhRHTp0SN27d1dYWJhatGihvXv3yjCMSud8dyXS9evXq3fv\n3rJYLOrfv79yc3NVVFSkoqIi5ebmqn///rJYLIqJidH69eslXbyiaVxcnG+fGQAAAABoQqrdVrp7\n926tXbtWN954o4YNGyZJmjhxosaMGaPU1FStWrVK7dq108KFCyVJXbp00eDBgzVkyBDZbDZNnz5d\nNtvFz/nNmDFDkydP1vnz5xUbG6vY2FhJUlJSkiZNmqT4+Hi1atVKGRkZkqTg4GA9/fTTSkpKkiSN\nGzfOfXGaSZMmacKECVq4cKFuvvlmJScn+/ipAQAAAICmo9pw2KtXL33++ecex7675+H3jR07VmPH\njq10vFu3blq3bl2l4wEBAVq0aJHHWklJSe5weKmIiAhuXwEAAAAAPuLV1UoBAAAAoDH6/q0nfHFh\nnOrMmDFFe/fu1unTpzVixBA99tgY3XPPcL9+zbogHAIAAACAH8ycaX5v04aoRlcrBQAAAABc3QiH\nAAAAAADCIQAAAACAcAgAAAAAEBekAQAAuGKafZxTxaBdzS6UeR6L9k8/AHApVg4BAAAAAIRDAAAA\nAADhEAAAAAAgwiEAAAAAQIRDAAAAAIAIhwAAAAAAEQ4BAAAAACIcAgAAAABEOAQAAAAAiHAIAAAA\nABDhEAAAAAAgwiEAAAAAQIRDAAAAAIAIhwAAAAAAEQ4BAAAAACIcAgAAAABEOAQAAAAAiHAIAAAA\nABDhEAAAAAAgwiEAAAAAQIRDAAAAAIAIhwAAAAAAEQ4BAAAAACIcAgAAAABEOAQAAAAAiHAIAAAA\nABDhEAAAAAAgwiEAAAAAQIRDAAAAAIAIhwAAAAAAEQ4BAAAAACIcAgAAAABEOAQAAAAAiHAIAAAA\nABDhEAAAAAAgwiEAAAAAQIRDAAAAAIAIhwAAAAAAEQ4BAAAAACIcAgAAAABEOAQAAAAAiHAIAAAA\nABDhEAAAAAAgwiEAAAAAQIRDAAAAAIAIhwAAAAAAEQ4BAAAAACIcAgAAAABEOAQAAAAAiHAIAAAA\nAJBkr+8GAACNX3r6XI/HAwMDVFJS6nEsLW2KP1sCAABeYuUQAAAAAEA4BAAAAAAQDgEAAAAAIhwC\nAAAAAEQ4BAAAAACIcAgAAAAAEOEQAAAAACDCIQAAAABAkr2+GwDQdKSnOzweDwyUSko8j6WlufzZ\nEgAAAP4X4RAAAABNWvqOuaZjgYEBKikp9TiWFj3FXy0B9YJtpQAAAAAAwiEAAAAAgHAIAAAAABDh\nEAAAAACgGlyQZvLkyfrwww/Vpk0brVu3TpK0ePFirVy5Uq1bt5YkTZw4UQMGDJAkLV26VKtWrZLV\natW0adP0ox/9SJK0f/9+TZ48WefPn9eAAQM0depUWSwWuVwupaWl6Z///KeCg4OVkZGh66+/XpK0\nevVq/epXv5IkjR07ViNGjJAkHT16VBMnTtTp06d16623Kj09XQ6H5ysdAgAAAP7WPN38ojYKDFBz\nk4vanE3jojZoOKoNhyNHjtSoUaP0/PPPX3Z89OjReuyxxy47dvDgQWVlZSkrK0tOp1MpKSlav369\nbDabXnzxRc2ePVs9evTQE088oS1btmjAgAHKzMxUUFCQNm7cqKysLC1YsEALFy7U6dOntWTJEr37\n7ruyWCwaOXKk4uLi1KpVKy1YsECjR49WYmKipk+frlWrVunBBx/07TMDwOeabc3xPOCwq5mrzOSs\nGL/1AwAAgP9T7bbSqKgotWrVqkbFsrOzlZiYKIfDoYiICHXo0EF5eXnKz8/XmTNn1LNnT1ksFg0f\nPlzZ2dmSpM2bN7tXBAcNGqRt27bJMAzl5uaqX79+Cg4OVqtWrdSvXz/l5OTIMAx98sknGjRokCRp\nxIgR7loAAAAAgNqp9X0O33zzTa1Zs0a33XabXnjhBbVq1UpOp1M9evRwPyY8PFxOp1N2u11t27Z1\nH2/btq2cTqckyel06rrrrrvYjN2uli1bqrCwUE6n87JzvqtVWFiooKAg2e32SrWqExLSXHa7rbbf\ncr0JDW1JDWpcFTUcDvOXHLMxb3prTM/F1VYjMDDA6zH+bqnRFGs4mlX9q5fZOD8v/q1R1WtYVeOX\n1a5ljUAf/93abFWv/ZiNM8fqt0ZDUatw+MADD+jpp5+WxWLRq6++qpdfflnz5s3zdW8+V1h4tr5b\n8FpoaEt99VUxNahxVdRwmWwddTjspmM17a2xPRdXWw2zG0RXdfNo/m6p0RRruC6YbaG/GAzNxvl5\nMZdexWf9qryB/SWf9TN7THU1Lu3P7DOF1dU46+O/2/LyCtMxm81qOs4cq78aV1pVYbZWVyu99tpr\nZbPZZLValZycrH379km6uLp36tQp9+OcTqfCw8MrHT916pTCw8Pd55w8eVKSVFZWpuLiYoWEhJjW\nCgkJ0bfffquysrJKtQAAAAAAtVOrlcP8/HyFhYVJkjZt2qQuXbpIkuLi4vTcc88pJSVFTqdThw4d\nUvfu3WWz2dSiRQvt3btXPXr00Jo1a/TQQw+5z1m9erUiIyO1fv169e7dWxaLRf3799crr7yioqIi\n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\nAAAAAND4NOrPHAIAAAAAfKPRhsPw8HCdOnXK/Wen06nw8PB67AgAAAAAGq9GGw67deumQ4cO6ejR\no3K5XMrKylJcXFx9twUAAAAAjVKjvSCN3W7X9OnT9fjjj6u8vFw//vGP1aVLl/puCwAAAAAapUZ7\nQRoAAAAAgO802m2lAAAAAADfIRwCAAAAABrvZw6vdlu2bNGcOXNUUVGh5ORkjRkzxusakydP1ocf\nfqg2bdpo3bp1Xp9/8uRJpaWlqaCgQBaLRffdd58eeeQRr2qUlpbqJz/5iVwul8rLyzVo0CCNHz/e\n614kuT9bGh4erqVLl3p9flxcnAIDA2W1WmWz2fTee+95XePbb7/VtGnT9MUXX8hisWju3LmKjIys\n8fn//ve/NWHCBPefjx49qvHjx2v06NFe9fGHP/xBmZmZslgsuvHGGzVv3jwFBAR4VWPFihXKzMyU\nYRhKTk6uUQ+e5tTp06c1YcIEHT9+XO3bt9fChQvVqlUrr2p88MEHWrJkib788ktlZmaqW7duXvcx\nf/58/e1vf1OzZs30X//1X5o3b56CgoK8qrFw4UJlZ2fLarWqTZs2mjdvXpVXQa7qZ+x3v/ud5s+f\nr23btql169Ze1Vi8eLFWrlzpPm/ixIkaMGCA13288cYbeuutt2Sz2TRgwAClpaV5VSM1NVX/+c9/\nJEnFxcVq2bKl1q5d61WNTz/9VDNmzFBpaalsNptefPFFde/e3asan332mWbMmKGzZ8+qffv2WrBg\ngVq0aGFaw+y1y5u5albDm7lqVsObuWpWw5u5Wt1reU3mqlkNb+ZqVX3UdK6a1fBmrprV8GaumtXw\nZq6avT96M0/NangzT81qeDNPzWrUdJ5W97tCTeaoWQ1v5mhVfdR0jprV8GaOmtXwZo6a1fD29VSq\n/PuXt+/7nmp4+77vqYa37/ueanj7vu+pxndq+r7f4BlocMrKyoyBAwcaR44cMUpLS42hQ4ca//rX\nv7yus2PHDmP//v1GYmJirfpwOp3G/v37DcMwjOLiYiMhIcHrPioqKowzZ84YhmEYLpfLSEpKMvbs\n2VOrfn73u98ZEydONMaMGVOr8++66y6joKCgVud+Jy0tzVi5cqVhGIZRWlpqFBUV1bpWWVmZ0bdv\nX+PYsWNenXfq1CnjrrvuMs6dO2cYhmGMHz/eePfdd72q8fnnnxuJiYnG2bNnjQsXLhiPPPKIcejQ\noWrP8zSn5s+fbyxdutQwDMNYunSpkZ6e7nWNgwcPGl9++aUxatQoIy8vr1Z95OTkGBcuXDAMwzDS\n09Nr1UdxcbH7/1esWGH87Gc/87qGYRjGiRMnjEcffdS48847q51znmosWrTIWL58eZXnVVdj27Zt\nxiOPPGKUlpYahmEYX3/9da2+l+/MmzfPWLx4sdc1UlJSjA8//NAwDMP48MMPjVGjRnldY+TIkcb2\n7dsNwzCMzMxMIyMjo8oaZq9d3sxVsxrezFWzGt7MVbMa3szVql7LazpXzWp4M1fNangzV2vyvlTd\nXDWr4c1cNavhzVw1e3/0Zp6a1fBmnprV8GaemtWo6Tyt6neFms5RsxrezFGzGt7M0Zr83lPdHDWr\n4c0cNavh7eupYVT+/cvb931PNbx93/dUw9v3fU81vH3f91TDMLx732/o2FbaAOXl5alDhw6KiIiQ\nw+FQYmKisrOzva4TFRVV7b/kVCUsLEy33nqrJKlFixbq1KmTnE6nVzUsFosCAwMlSWVlZSorK5PF\nYvG6l1OnTunDDz9UUlKS1+f6SnFxsXbu3OnuweFwVPsvVFXZtm2bIiIi1L59e6/PLS8v1/nz51VW\nVqbz588rLCzMq/O//PJLde/eXddcc43sdruioqK0YcOGas/zNKeys7M1fPhwSdLw4cO1adMmr2t0\n7txZnTp1qnH/nmr0799fdvvFzRA9e/a87D6oNa1x6b+enjt3rtq5avYzNm/ePE2aNKlGc72uP6dm\nNd5++22NGTNGDodDktSmTZta92EYhj744APdc889XtewWCwqKSmRdPFnqLq56qnGoUOHFBUVJUnq\n169ftXPV7LXLm7lqVsObuWpWw5u5albDm7la1Wt5TeeqL94PzGp4M1er66Mmc9Wshjdz1ayGN3PV\n7P3Rm3lqVsObeWpWw5t5alajpvO0qt8VajpHffH7hlkNb+ZodX3UZI6a1fBmjprV8Pb11NPvX96+\n73uq4e37vqca3r7ve6rh7fu+2e+j3rzvN3SEwwbI6XSqbdu27j+Hh4d7/Sbsa8eOHdOnn36qHj16\neH1ueXm5hg0bpr59+6pv3761qjF37lxNmjRJVmvdpmxKSopGjhypd955x+tzjx07ptatW2vy5Mka\nPny4pk6dqrNnz9a6l6ysrGp/2fYkPDxcjz76qO666y71799fLVq0UP/+/b2qceONN2r37t0qLCzU\n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\nSI7J7j0AAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fa0189825f8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Y = np.arange(len(l2_test[0]))\n",
"plt.figure(figsize=(15, 7))\n",
"plt.bar(Y, l2_test[0], align='center', alpha = 0.5, label = '1/ 58', color = 'red')\n",
"plt.bar(Y, l2_test[1], align='center', alpha = 0.5, label = '2 / 58', color = 'green')\n",
"plt.bar(Y, l2_test[-2], align='center', alpha = 0.5, label = '1 / 2', color = 'blue')\n",
"plt.bar(Y, l2_test[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n",
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n",
"plt.legend(loc = 'best')\n",
"plt.title('Hist with bad files. Petr')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"bad_files = [4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18, 22, 24, 25, 27, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40]"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n",
"l2_test = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n",
"l2_test = np.sqrt(l2_test) * 100"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAeYAAAFaCAYAAADLm/7BAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtcVXW+//H3BsQEzQMEmOZoUlpTiRSoqGnhaCoSeMvm\npMdwZkwrCU0dL2XHe1qTVGMmY/60mi6jMXhGqmNiipOKmhZ1uo2VmqmgqKWgclvnD3/uE7phs/de\nW9eG1/Px6PHItb/7sz577QVv1t1mGIYhAABgCX5XugEAAPB/CGYAACyEYAYAwEIIZgAALIRgBgDA\nQghmAAAshGBGg5GYmKj8/PzLNr+ZM2dqyZIlNb7+4osvatKkSZetn1/KysrSb3/7W9PqdejQQfv3\n73f42rFjx/TAAw8oJiZGTz/9tF5++WXNmDFDknTw4EF16NBBFRUVpvUC+DqCGfVCQkKCtm7dWm3a\nxeGTk5OjLl261FrHzKCYPXu2HnnkEUlSfn6+evbs6XHNuqotKC+3t99+WyEhIdq9e7emTp2qsWPH\nat68eZdt/llZWbr55psVExOj22+/XcnJyfrwww/r9F5H6xXgbQQzAK86dOiQoqKiZLPZrlgPnTp1\n0p49e7Rr1y4NHTpU6enp+umnnzyuy5Y+vIFgRoPxy62fgoICDR48WLfffru6deumBQsWSJJGjBgh\nSYqLi1NMTIz27NlTrca5c+fUsWNHHT9+XJK0dOlS/frXv9bp06clSRkZGfatwalTp2rx4sUqLS3V\nH/7wBxUVFSkmJkYxMTEqLCyUJJWXl2vKlCmKiYlRYmKiPvvsM/u8vv32W40cOVKxsbFKTExUbm6u\n/bWRI0dq9erV9n//cu/AAw88IElKTk5WTEyM3n33XYfLwzAMzZ49W3fccYf69eunbdu22V975513\n1L9/f8XExKh379566623qr13+fLl6tGjh3r06KE1a9bUuMynTp2q7OxsvfLKK4qJidHWrVtr3YV/\n6tQpTZ8+XT169NCdd96pxYsXq7KyUpK0f/9+jRgxQnfccYe6dOmi9PT0GudbEz8/Pw0ZMkRnz57V\ngQMHJEkffvihkpOTFRsbq/vvv19fffWVJGny5Mk6dOiQxo4dq5iYGP3lL3+x71FZvXq17rrrLo0a\nNcrlHgBnCGY0SPPmzdN//Md/aPfu3frggw/Uv39/SdLrr78uSdq5c6f27NmjmJiYau9r3Lixbrvt\nNu3cudM+rmXLlvr444/t/+7cuXO19wQFBekvf/mLIiIitGfPHu3Zs0eRkZGSpI0bNyoxMVG7du1S\nQkKC5syZI+l8YI8dO1bdu3fX1q1b9cQTT2jSpEn67rvvnH62v/71r5KktWvXas+ePRowYIDDcQUF\nBfrVr36l7du3Ky0tTY8++qhOnjwpSQoLC9OyZcu0e/duLViwQAsWLND//M//SJLy8vK0YsUKrVix\nQuvXr68W6Bd7+umnlZSUpN/97nfas2ePunXrVmvvU6dOVUBAgNavX6/s7Gx99NFH9j9Ann/+eXXv\n3l07d+5UXl6e/Y8oV1RUVGj16tUKCgpS27Zt9cUXX2j69OmaPXu28vPzNXz4cD388MMqKyvTM888\no5YtW+rll1/Wnj179Ic//MFeZ+fOnXr33Xf1yiuvuNwD4AzBjHrjkUceUWxsrP2/WbNm1Tg2ICBA\nBw4c0PHjxxUcHKxOnTrVeT5xcXHauXOnKioq9PXXX2vkyJHauXOnzp07p88++0yxsbF1rnXHHXeo\nV69e8vf3V3Jysn1r7dNPP1VpaanGjBmjwMBAxcfH6+6771ZOTk6dazsTGhqqUaNGqVGjRhowYICu\nv/56bdq0SZJ011136Ve/+pVsNps6d+6s7t27a9euXZKk9957T4MHD1b79u0VFBSkRx991JR+jh07\nps2bN2v69OkKCgpSWFiYHnzwQftnDggI0KFDh1RUVKTGjRu7tJw//fRTxcbGqnv37srJydGSJUvU\nrFkzvf322xo+fLiio6Pl7++vQYMGqVGjRvrkk09qrTd+/HgFBQXpqquu8ugzA44EXOkGALMsWbKk\n2hZZVlZWtd29vzRv3jy98MIL6t+/v6677jo9+uijuvvuu+s0n86dO2vBggX64osv1L59e3Xv3l0z\nZszQJ598ojZt2igkJKTOPV9zzTX2/7/qqqt07tw5VVRUqKioSC1atJCf3//97dyyZUv7LnAzREZG\nVjvu27JlSxUVFUmSNm/erCVLlmjfvn2qqqrS2bNn1b59e0lSUVGRbr31Vvv7WrVqZUo/hw4dUkVF\nhXr06GGfVlVVpWuvvVbS+V3Lzz//vIYOHarmzZsrNTVVQ4cOrVPt6Ohovfnmmw7nmZ2dbd9TIp3f\nW3FhOdSkRYsWdZov4A6CGQ1S27Zt9dxzz6mqqkrr169XWlqa8vPz63SCUkxMjL7//nt98MEHiouL\n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\n/Lj97MizZ89q69atHh9fuiAnJ0eJiYmm1Pql3/zmN8rPz5ckff/99yovL1dISIgptS98/l8e4vDE\nhV3MVVVVWrp0qe6//36X3l/T956QkKDs7GxJ5x8M07t3b1PqeqKmmvv27bP/f25ursvrV011PV0P\naqobERGhHTt2SJK2b9/u0iGNmmp6uh544+f08ccfV15enjZu3KjnnntOXbt21bPPPutRzdrq5uXl\nafny5Vq6dKmaNGliSk1P1y1HdV988UVt27ZNGzdu1MaNG9WiRQtlZWUpPDzcpdpm8cotOa3MW7cL\nnThxonbs2KETJ06oZ8+eGj9+vIYNG+ZRzY8//lhr165V+/bt7ZfxTJw4Ub169fKoblFRkaZOnarK\nykoZhqF+/frp7rvv9qimJJWWlmrr1q2aPXu2R3UcLcshQ4Zo+vTpGjhwoBo1aqSnn37a5V25NX1H\n7777rtt/TDiqWVpaqjfeeEOS1KdPHw0ZMsSlmjV972PGjFF6errWrFmjli1bKiMjw5S6ZWVlmjNn\njo4fP66HHnpIN998s1555RWPaq5Zs0bff/+9bDabWrVqpVmzZpnSq6frQU1158yZo/nz56uiokKN\nGzd2aR2uqea+ffs8Wg9q+jn94IMP3P6+auKNmpI0Z84clZWV2f9giY6O9vj3w5/+9CeP1i1fwC05\nAQCwkAa3KxsAACsjmAEAsBCCGQAACyGYAQCwEIIZAAALIZgBALAQghkAAAshmAEAsJD/Be2/cNrv\ntsIZAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fb419fa4e80>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Y = np.arange(len(l2_test[0]))\n",
"plt.bar(Y, l2_test[0], align='center', alpha = 0.5, label = '1/ 58', color = 'red')\n",
"plt.bar(Y, l2_test[1], align='center', alpha = 0.5, label = '2 / 58', color = 'green')\n",
"plt.bar(Y, l2_test[-2], align='center', alpha = 0.5, label = '1 / 2', color = 'blue')\n",
"plt.bar(Y, l2_test[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n",
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n",
"plt.legend(loc = 'best')\n",
"plt.title('Hist without bad files. Petr')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 76.04126852, 61.09931123, 45.08664129, 30.8282287 , 30.73955547])"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"l2_test = np.mean(l2_test, axis = 1)\n",
"l2_test"
]
},
{
"cell_type": "code",
"execution_count": 215,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n",
" (prop.get_family(), self.defaultFamily[fontext]))\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3UAAAG5CAYAAAApux3GAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xt4nHWd///XPedTMkkmM2mSSQ8pLWewbC0UAZdWkEPR\nuiCw8lUXf9qVVVkRXEFF3IpyecIK667UFWWvXUWFWlzAXSgHWaAgyKEcWilND5mcZjI5ziGZZHL/\n/kgbrT2lTe45NM/HdeW6mntm7vtN+FDz8v7c77dhmqYpAAAAAEBZshW7AAAAAADAkSPUAQAAAEAZ\nI9QBAAAAQBkj1AEAAABAGSPUAQAAAEAZI9QBAAAAQBkj1AEADtuyZcv07LPPFux6X/nKV/SDH/yg\nYNcrB88//7zOOeecaX8vAKD8EOoAAFPy61//Wn/zN3+j0047Teecc46+9a1vaXR09IjPt27dOv3t\n3/7tXsdWr16tT33qU1Oq89hjj9XOnTundA5JuvPOO3XDDTdM+TyTtW7dOh177LF6+OGHC3ZNAEB5\nIdQBAKYkm83qi1/8op577jn96le/0nPPPae77757v++dStibqX7961+rqqpK69evL3YpAIASRagD\nAEzJhz70IS1evFgul0t1dXW65JJL9NJLL028vmzZMq1du1aXXHKJ3vGOd2h0dFRr167Ve97zHi1a\ntEgXXXSRHn30UUnStm3bdMstt+iVV17RokWLtHjxYknSjTfeqO9973sT5/zlL3+p8847T0uWLNEn\nP/lJdXV1HbTGq666SpL0/ve/X4sWLZq46/XEE0/o/e9/vxYvXqwrr7xSW7ZsmfjM2rVrdfbZZ2vR\nokV673vfq40bN+qpp57SXXfdpd/+9rdatGiR3ve+9+1zrbVr1+raa6/d69itt96qW2+9VdL4nbfl\ny5dr0aJFWrZsmX7zm98csO62tja98MILWr16tZ5++mklEokDvnfZsmW66667dNFFF+md73ynbrrp\nJg0PD+/1nrvvvltLly7VWWedpfvvv3/i+JNPPqmVK1fqtNNO07vf/W7deeedB7wOAKAEmQAAHKZz\nzz3XfOaZZ/b72jXXXGN++9vf3uu973vf+8z29nYzm82apmmaDz/8sNnZ2Wnm83nzoYceMk899VSz\nq6vLNE3TvP/++80rr7xyr3N+4QtfMG+//XbTNE3z2WefNZcsWWK+/vrr5vDwsLl69WrzQx/60CFr\nXrhwobljx46J79944w3zjDPOMF955RVzdHTUXLdunXnuueeaw8PD5rZt28xzzjnH7OzsNE3TNFtb\nW82dO3eapmmad9xxh3n99dcf8DqxWMw85ZRTzMHBQdM0TXN0dNR817veZb788stmOp02Fy1aZG7b\nts00TdPs6uoy33rrrQOe61/+5V/MSy+91DRN01yxYoX54x//eOK15557zjz77LMnvj/33HPNiy++\n2Gxvbzd7e3vNK664YuJn9txzz5nHH3+8uWbNGjOXy5lPPvmkecopp5h9fX0Tr2/ZssXM5/Pm5s2b\nzaVLl5qPPvroIX+mAIDSwJ06AMC0ue+++/T666/rYx/72F7HP/zhD6u+vl4ej0eSdOGFF6qurk42\nm00XXXSR5syZo02bNk3qGv/93/+tSy+9VCeeeKJcLpc+97nP6ZVXXlEsFjusWn/xi1/oiiuu0Kmn\nniq73a4PfOADcjqdeuWVV2S325XL5bRt2zaNjIwoGo1q9uzZkzpvY2OjTjjhBG3YsEGS9Nxzz8nj\n8egd73iHJMlms2nr1q0aGhpSJBLRggULDniuBx54QCtWrJAkrVix4pBbMK+66irV19erqqpK11xz\njR566KGJ1xwOhz71qU/J6XTq3e9+t3w+n7Zv3y5JOv3003XsscfKZrPpuOOO08UXX6zf//73k/rn\nBQAUH6EOADAtNmzYoNtvv10/+tGPVFNTs9dr9fX1e32/fv36iW2Pixcv1tatW9Xb2zup68TjcTU2\nNk587/f7VVVVdcgtmH+pvb1dP/nJTyZqWLx4sTo7OxWPxzVnzhx98Ytf1J133qkzzzxT11133WGd\nf8WKFXrwwQclSQ8++OBEMPP5fPre976ne++9V2eddZZWrVqlbdu27fccf/jDHxSLxXTxxRdPnPOt\nt97S5s2bD3jdP/85NzQ0KB6PT3xfVVUlh8Mx8b3X61Umk5Ekvfrqq/rwhz+sM844Q3/1V3+le++9\nd9L/PgAAxUeoAwBM2VNPPaUvf/nL+uEPf6hjjz12n9cNw5j4c1tbm7785S/r5ptv1vPPP68XX3xx\nr7tVf/7e/YlEImpra5v4PpPJqK+vT3V1dYdVc319vT75yU/qxRdfnPh69dVXJwLYJZdcop///Od6\n4oknZBiGvvOd70yqPmn8TuTvf/97dXZ26tFHH9Ull1wy8drZZ5+tn/zkJ3r66afV3Nysm2++eb/n\n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\nCkl8B6cAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fa0185cd780>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x = np.array(enc_dims) / 58.\n",
"plt.figure(figsize=(15, 7))\n",
"\n",
"y = np.array(l2_test)\n",
"plt.plot(x, y, marker='o', alpha = 0.5, label = \"l2ratio_test\")\n",
"\n",
"plt.title(\"l2ratio_test vs Alpha\")\n",
"plt.xlabel(\"Alpha\")\n",
"plt.ylabel(\"l2ratio\")\n",
"plt.legend(loc = 'best')\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
@ossadtchi
Copy link

ossadtchi commented Apr 16, 2018

(Last Petr's plot):

  1. Take the left most point on the graph. It says that using (I guess 1-D ) autoencoder we get more than 80% of error in representing the EEG signal. Then, the second points states that using 6-D (or 5-D?) autoencoder we get 45% of error and so on until 29-D thing explains 70% of the variance in the data leaving 30% unexplained. Do I understand it correctly?

  2. If my understanding is correct then I am not getting why the conv net based encoder is worse than the PCA that explains with 29 dimensions 78% of the variance leaving only 22% unexplained?

  3. Why do we still get 30% error even when the using all the dimensions in the autoencoder ?

Suggestion: Also, It is better to plot the curves from all 3 methods on a single graph with the appropriate legend

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment