Created
March 23, 2018 01:06
-
-
Save Radi4/ce5e542456ab072781a0b6d559746c6e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "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 h5py\n", | |
| "import pickle\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": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Load train data" | |
| ] | |
| }, | |
| { | |
| "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", | |
| " eeg_data = None\n", | |
| " return eeg_data" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "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 = np.concatenate([x for x in \n", | |
| " load_file.map([train_dir + f for f in train_names]) \n", | |
| " if x is not None], axis=0)\n", | |
| "X_train = data" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Load test data" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "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", | |
| " test_data = np.concatenate([x for x in \n", | |
| " load_file.map([eeg_dir + f for f in eeg_names]) \n", | |
| " if x is not None], axis=0)\n", | |
| " return test_data" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "X_test = load_new_data()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "# PCA" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Метод главныx компонент - бейзлайн, который в идеале надо побить с помощью NN" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "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": 8, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "components_count = [1, 2, 4, 8, 12, 29, 40, 45, 50, 55, 58]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "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": "code", | |
| "execution_count": 3, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "enc_dims = [1, 2, 4, 8, 12, 29, 40, 45, 50, 55, 58]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### Команда Девушек" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Calc L2Ratio on Train" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "def calc_metric(enc_dim, X, X_scaled, scaler, delete_channel = None):\n", | |
| " name = \"./Girls_model_\"\n", | |
| " autoencoder = load_model(name + str(enc_dim) + \".h5\")\n", | |
| " X_predict = scaler.inverse_transform(autoencoder.predict(X_scaled))\n", | |
| " if delete_channel is not None:\n", | |
| " l2 = metric(np.delete(X, delete_channel, 1), np.delete(X_predict, delete_channel, 1))\n", | |
| " else:\n", | |
| " l2 = metric(X, X_predict)\n", | |
| " return l2" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 17, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "scaler_train = StandardScaler()\n", | |
| "X_train_scaled = scaler_train.fit_transform(X_train)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 31, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "CPU times: user 1h 40min 43s, sys: 33min 13s, total: 2h 13min 57s\n", | |
| "Wall time: 1h 38min 39s\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%%time\n", | |
| "l2_train = []\n", | |
| "for enc_dim in enc_dims:\n", | |
| " l2_train.append(calc_metric(enc_dim, X_train, X_train_scaled, scaler_train))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 33, | |
| "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": "iVBORw0KGgoAAAANSUhEUgAAA4UAAAG5CAYAAAA595FfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xt4lPWd///XPadkJpmQhISAJKDGACqCsAZRUL9E0CpQ\nD4iw68/aKrXaVtvVHlRQKpX2Z9dSdrtqBcqKvUTXVAoLuHyjKFLPoiC2BQnI+RCSkPMkkzl9/0gy\nEHIg5HBPJvN8XBeX5J65534PfK7qq5/3/b6NUCgUEgAAAAAgJlkiXQAAAAAAIHIIhQAAAAAQwwiF\nAAAAABDDCIUAAAAAEMMIhQAAAAAQwwiFAAAAABDDCIUAAFPk5eXpgw8+MO16TzzxhJ599lnTrteW\nOXPm6C9/+Uuky2jTxx9/rKuvvrrb3wsAiB6EQgCA6f7yl7/o1ltv1dixY3X11VfrN7/5jfx+f6c/\nb9WqVfrnf/7nZscWLFigH/zgB12qc/jw4dq/f3+XPmPZsmW65ZZbuvQZ3WHVqlUaPny43njjjUiX\nAgDoZQiFAADT1dbW6rHHHtNHH32k/Px8ffTRR1q+fHmr7+1KWOxpvbm20/3lL39RcnKyVq9eHelS\nAAC9DKEQAGC6f/mXf9Fll10mh8OhjIwMTZ8+XZ9//nn49by8PC1ZskTTp0/XpZdeKr/fryVLlmjy\n5MkaM2aMbrzxRr355puSpD179mj+/Pnatm2bxowZo8suu0yS9Mgjj+h3v/td+DNfe+01TZkyRePG\njdN9992noqKidmu84447JEk33XSTxowZozfeeCPcPrlkyRJNmDBBjz76qCoqKvS9731P48ePV25u\nrr73ve/p2LFj4c+58847lZ+fL+nkjubTTz+t3Nxc5eXl6d133231+kuWLNGDDz7Y7NhTTz2lp556\nKvxZ1157rcaMGaO8vDz9z//8T5vf5fDhw/r000+1YMECvffeeyouLm7zvXl5eXrhhRd04403Kjc3\nV48++qi8Xm+z9yxfvlxXXHGFJk6cqNdffz18fNOmTbr55ps1duxYXXPNNfr973/f5nUAAL0HoRAA\nEHGffvqpLrjggmbH1q9fryVLlmjLli2y2WzKysrSyy+/rM8++0w//OEP9dOf/lTHjx9Xdna2nnzy\nSV166aXaunWrtmzZ0uLzP/zwQ/32t7/V4sWL9d5772nw4MF66KGH2q3p5ZdfliStWbNGW7du1Y03\n3ihJKikpUUVFhd555x398pe/VDAY1K233qp33nlH77zzjuLi4rRgwYI2P3f79u0677zz9NFHH2nO\nnDmaO3euQqFQi/dNnTpV7777rqqrqyVJgUBAGzZs0LRp0+TxePTUU09p6dKl2rp1q1599VVdeOGF\nbV5z9erVGjlypK6//nplZ2dr7dq17X73tWvX6o9//KPefPNN7d27V88991z4tZKSElVVVWnz5s1a\nuHChFixYoIqKCkmS0+nU008/rS1btuiFF17QK6+8orfeeqvdawEAIo9QCACIqD//+c/629/+prvv\nvrvZ8TvvvFODBg1SfHy8JOmGG25QRkaGLBaLbrzxRg0dOlTbt2/v0DXWrl2rGTNm6OKLL5bD4dBD\nDz2kbdu26dChQ2ddr8Vi0YMPPiiHw6H4+HilpKTo+uuvl9PpVGJiou6//359+umnbZ5/zjnn6Pbb\nb5fVatUtt9yi4uJilZSUtHjf4MGDddFFF4VD1UcffaT4+Hhdeuml4ToKCwtVV1enAQMGKCcnp81r\nrlmzRtOmTZMkTZs27YwtpHfccYcGDRqk5ORk3X///Vq/fn34NZvNph/84Aey2+265ppr5HK5tHfv\nXknS5ZdfruHDh8tisWjEiBGaOnWqPvnkk3avBQCIPEIhACBi3nrrLS1atEhLly5Vampqs9cGDRrU\n7OfVq1frpptu0mWXXabLLrtMhYWFKisr69B1jh8/rsGDB4d/TkhIUHJy8hlbSFuTkpKiuLi48M+1\ntbV64oknNGnSJI0dO1Z33HGHKisrFQgEWj0/LS0t/Hun0ylJ8ng8rb532rRpWrdunSRp3bp14WDn\ncrn0u9/9Tq+++qomTpyoe++9V3v27Gn1Mz777DMdOnRIU6dODX/mrl27tGPHjja/46l/9uecc46O\nHz8e/jk5OVk2m63Zd2iq/4svvtCdd96p8ePH65/+6Z/06quvdvjvCAAQOYRCAEBEbN68WfPmzdMf\n/vAHDR8+vMXrhmGEf3/48GHNmzdPjz/+uD7++GNt2bKl2c7Yqe9tzYABA3T48OHwzx6PR+Xl5crI\nyDjruk+/1vLly7V371699tpr+vzzz8Ntp621hJ6tG264QZ988omOHTumN998U9OnTw+/dtVVV+m/\n/uu/9N577+n888/X448/3upnrF69WqFQSDfffLMmTJig22+/XZLafUzG0aNHw78/cuSIBgwY0KF6\nH374YV177bV699139dlnn2n27Nnd8ucAAOhZhEIAgOk+/PBD/fSnP9Xvf/97jRo16ozvr62tlWEY\n4d3E119/XYWFheHX+/fvr6KiItXX17d6/rRp07Rq1Srt2LFD9fX1WrRokUaNGqXMzMx2r5uWlqaD\nBw+2+56amhrFxcUpKSlJ5eXl+s///M8zfp+OSk1N1bhx4/Too48qMzNT2dnZkhru63vrrbfk8Xjk\ncDjkcrlksbT8V7rX69X//u//asGCBVq9enX41+OPP65169a1OT115cqVOnbsmMrLy/WHP/whfD/l\nmdTU1Khfv36Ki4vT9u3bw7ucAIDejVAIADDdc889p6qqKt17770aM2aMxowZozlz5rT5/gsuuEB3\n3323Zs+erSuvvFK7du3S2LFjw6+PHz9eF1xwgSZOnKjLL7+8xflXXnmlfvSjH+mBBx7QxIkTdfDg\nwWaTSdvywx/+UI888oguu+yyNp/vd9ddd8nr9Wr8+PGaNWuWrrrqqg78CXTctGnT9MEHH4RbRyUp\nGAzqxRdf1FVXXaVx48bp008/1S9+8YsW57711luKj4/XzTffrPT09PCvGTNmKBAI6K9//Wub17z7\n7rs1efJkDRkyRPfff3+Hap0/f77+4z/+Q2PGjNGzzz6rG264oVPfGQBgLiNEXwcAAGiUl5enp556\nSldeeWWkSwEAmISdQgAAAACIYbYzvwUAgL5py5Yt+u53v9vqa1u3bjW5GgAAIoP2UQAAAACIYbSP\nAgAAAEAMi4n20eLiqh6/RkqKS2VlrT98GOgurDOYhbUGs7DWYBbWGszSW9daerq7zdfYKewmNps1\n0iUgBrDOYBbWGszCWoNZWGswSzSuNUIhAAAAAMSwHguFjz76qK644opmD9stLy/Xd77zHV133XX6\nzne+o4qKivBrL7zwgqZMmaLrr7++zYfptnc+AAAAAODs9VgovPXWW7Vs2bJmx5YsWaIrrrhCBQUF\nuuKKK7RkyRJJ0u7du7V+/XqtX79ey5Yt05NPPqlAINDiM9s6HwAAAADQOT0WCnNzc9WvX79mxzZu\n3Kibb75ZknTzzTfrrbfeCh+fOnWqHA6HsrKyNHToUG3fvr3FZ7Z1PgAAAACgc0ydPlpaWqoBAwZI\nktLT01VaWipJKioq0ujRo8Pvy8jIUFFRUYfPP5OUFJcpN3y2N9EH6C6sM5iFtQazsNZgFtYazBJt\nay1ij6QwDEOGYZhyvhkjYdPT3aY8+gKxjXUGs7DWYBbWGszCWoNZeuta6zWPpOjfv7+OHz8uSTp+\n/LhSU1MlNewMHjt2LPy+oqIiZWRkdPh8AAAAAEDnmBoK8/LytHr1aknS6tWrde2114aPr1+/XvX1\n9Tp48KD27dunUaNGdfh8AAAAAEDn9FgofOihhzR79mzt3btXV199tfLz83Xvvffq/fff13XXXacP\nPvhA9957ryQpJydHN9xwg2688UbNmTNHTzzxhKzWhnsA586dqy+//FKS2jwfAAAAANA5RigUCkW6\niJ5mRk9vb+0dRt/COoNZWGswC2sNZmGt9V6HiqtVeLBcVR6f3C67crKSlZme2KXPnDLlKr355l9V\nWPiVnnnm/1dNTY2sVou+9a27de21153VZ23evElZWUN03nnnS5KWLfuDRo8eo9zcy1t9f1tr7bXX\nVuqb37xV8fHxZ3X9M12vo9q7pzBig2YAAAAAxLZDxdXasvN4+OeKmvrwz10NhpIUFxevefOeVFbW\nEJWUFOuee/4/jRt3hdzu5gEpEAiEOxVP99e/btKVV04Mh8I5c+7rVC2vvfaKrrvuxlZDYXvX7+z1\nzgahEAAAAECP+NveUh0paftJAIWHylVXH2hx/HBJjXIyk1s955w0l0ae179D1x8yZGj492lp6UpO\nTlV5eZncbrduu2268vKmaMuWj/Uv//IteTwe/c///EU+n0+ZmZl6/PFfqrDwK7333mZt2/a5VqxY\nroULf6MXX1ymK6+cqEmTJmvLlk/07LOLFQgENGLERfrJTx5ttY78/FdVUlKsBx/8nvr1S9bvf/+C\npky5St/85q3asuUTPfTQz/X555/q/ff/Kq+3TiNHjtbPfvaYDMPQwoW/CF/vttum64Ybpun99zfL\n7/frl798WkOHntuhP4v2mDpoBgAAAACaeFsJhO0d74p//ONv8vt9Gjw4M3ysX79+Wr78ZU2efL2u\nuWaSli17SStWvKKhQ8/TunWrdcklozVx4tX6/vcf1Isvrmx2rtfr1a9+9aSefPLXeuml/1YgENDq\n1X9u9dozZ85WWlq6/uM/XtDvf/+CJKm2tlYXXTRSK1a8otGjL9WMGbdr2bKX9Kc/vab6+jq9//5f\nW/2spppvvvk2vfLKn7rlz4adwgjoib5pAAAAoLcZeV7/dnf17FZDFTX1LY73S3Bo0tjMVs7onJKS\n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\nRU5ErkJggg==\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x7f46065bbe80>" | |
| ] | |
| }, | |
| "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": 10, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "scaler_test = StandardScaler()\n", | |
| "X_test_scaled = scaler_test.fit_transform(X_test)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "%%time\n", | |
| "l2_test = []\n", | |
| "for enc_dim in enc_dims:\n", | |
| " l2_test.append(calc_metric(enc_dim, X_test, X_test_scaled, scaler_test))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 17, | |
| "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": "iVBORw0KGgoAAAANSUhEUgAAA3sAAAG5CAYAAAA3ci11AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8XHW9//H3mX1LZjJL9raUrnQPdqct0CpeoUgFBa5c\nF1z6k6vcq6g/QcUFuXpFRC7ovVoF9T68XlTAXi/gTy1SoKWlLdCVLumePZNlJslMMplM5vdH2kCF\ntmmbmcnyej4eeTw658yc80n4MpN3vp/zPUY6nU4LAAAAADCimHJdAAAAAABg8BH2AAAAAGAEIuwB\nAAAAwAhE2AMAAACAEYiwBwAAAAAjEGEPAAAAAEYgwh4AYNAsX75cL730UtbO97WvfU0/+tGPsna+\n4eDll1/WsmXLBv25AIDhh7AHAMiI3//+97r++ut16aWXatmyZbrvvvvU09Nz3sd78skn9fd///en\nbLvnnnv06U9/+oLqnDJlio4dO3ZBx5Ckhx9+WF/4whcu+DgD9eSTT2rKlCl65plnsnZOAMDwQtgD\nAGREZ2envvzlL2vz5s363e9+p82bN+vRRx992+deSAgcrX7/+9/L5/Np7dq1uS4FADBEEfYAABnx\nwQ9+UHPnzpXNZlNRUZGuvfZavfrqq/37ly9frjVr1ujaa6/VnDlz1NPTozVr1uid73ynKioqdPXV\nV+svf/mLJOnQoUP6+te/ru3bt6uiokJz586VJN155536wQ9+0H/M3/72t3rXu96l+fPn61Of+pQa\nGhrOWOMtt9wiSbruuutUUVHRP0v23HPP6brrrtPcuXN18803a9++ff2vWbNmjZYuXaqKigq9+93v\n1qZNm/TCCy/oJz/5if74xz+qoqJC733ve99yrjVr1uif/umfTtl277336t5775XUN1O3YsUKVVRU\naPny5frDH/5w2rpramq0detW3XPPPdqwYYPC4fBpn7t8+XL95Cc/0dVXX6158+bprrvuUiKROOU5\njz76qBYtWqQlS5boiSee6N++fv16rVq1Spdeeqkuv/xyPfzww6c9DwBgCEoDADBIrrzyyvTGjRvf\ndt9tt92W/t73vnfKc9/73vema2tr052dnel0Op1+5pln0vX19elUKpV++umn07Nnz043NDSk0+l0\n+oknnkjffPPNpxzzS1/6UvqBBx5Ip9Pp9EsvvZSeP39+evfu3elEIpG+55570h/84AfPWvPkyZPT\nR48e7X+8Z8+e9MKFC9Pbt29P9/T0pJ988sn0lVdemU4kEulDhw6lly1blq6vr0+n0+l0VVVV+tix\nY+l0Op1+6KGH0p///OdPe57q6ur0rFmz0u3t7el0Op3u6elJX3bZZenXXnstHYvF0hUVFelDhw6l\n0+l0uqGhIX3gwIHTHuuHP/xh+oYbbkin0+n0ypUr04888kj/vs2bN6eXLl3a//jKK69MX3PNNena\n2tp0a2tr+qabbur/mW3evDl9ySWXpB988MF0d3d3ev369elZs2alI5FI//59+/alU6lUeu/evelF\nixal//KXv5z1ZwoAGBqY2QMAZNzjjz+u3bt362Mf+9gp2z/0oQ+ppKREDodDkvSe97xHRUVFMplM\nuvrqqzVu3Djt3LlzQOf43//9X91www2aPn26bDab7rjjDm3fvl3V1dXnVOtvfvMb3XTTTZo9e7bM\nZrPe9773yWq1avv27TKbzeru7tahQ4eUTCZVXl6usWPHDui4ZWVlmjZtmtatWydJ2rx5sxwOh+bM\nmSNJMplMqqysVFdXlwoLCzVp0qTTHut//ud/tHLlSknSypUrz9rKecstt6ikpEQ+n0+33Xabnn76\n6f59FotFn/70p2W1WnX55ZfL5XLpyJEjkqQFCxZoypQpMplMmjp1qq655hpt2bJlQN8vACD3CHsA\ngIxat26dHnjgAf30pz+V3+8/ZV9JSckpj9euXdvfPjl37lxVVlaqtbV1QOdpbGxUWVlZ/2O32y2f\nz3fWVs6/VVtbq5///Of9NcydO1f19fVqbGzUuHHj9OUvf1kPP/ywFi9erM997nPndPyVK1fqqaee\nkiQ99dRT/YHN5XLpBz/4gR577DEtWbJEq1ev1qFDh972GK+88oqqq6t1zTXX9B/zwIED2rt372nP\n++afc2lpqRobG/sf+3w+WSyW/sdOp1PxeFyStGPHDn3oQx/SwoUL9Y53vEOPPfbYgP97AAByj7AH\nAMiYF154QV/96lf14x//WFOmTHnLfsMw+v9dU1Ojr371q7r77rv18ssva9u2bafMbr35uW+nsLBQ\nNTU1/Y/j8bgikYiKiorOqeaSkhJ96lOf0rZt2/q/duzY0R/Mrr32Wv33f/+3nnvuORmGofvvv39A\n9Ul9M5dbtmxRfX29/vKXv+jaa6/t37d06VL9/Oc/14YNG3TxxRfr7rvvfttjrF27Vul0WqtWrdJl\n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\nKz8//7zb+Hy+L20DnM9o5kySampq9Mtf/lJ//vOflZWVFcuISBCjmbWqqio98sgjkqSOjg5t3bpV\nDodD3/nOd2KaFfFtNLNWUFCgzMxMpaWlKS0tTYsXL1ZNTQ1lD1/JaGZtw4YNeuCBB2QYhqZOnaqS\nkhLV1dVpwYIFsY6LBBZvnYC3dCXNnz9fx44dU319vSKRiDZt2qRrr732rG2uvfZabdy4UaZpau/e\nvcrIyFBeXp5FiRGPRjNnjY2NWr16tZ5//nleCOGijWbW3n333eH/li9frieffJKih69sNLN23XXX\naffu3RoYGFBPT4/27dunsrIyixIjXo1m1goLC7V9+3ZJUmtrqz777DOVlJRYERcJLN46AUf2JDkc\nDj3xxBO6//77NTg4qO9973sqLy/Xa6+9Jkm66667dM0112jr1q1atmyZUlNT9eyzz1qcGvFmNHP2\nhz/8QYFAQE899ZQkyW63a8OGDVbGRhwazawBY2E0s1ZWVja8hspms+n222/XrFmzLE6OeDOaWXvo\noYf0+OOPa+XKlTJNU48++qiys7MtTo5488gjj2jnzp3q6OjQ0qVLtXr1ag0MDEiKz05gmKZpWh0C\nAAAAADC2OI0TAAAAABIQZQ8AAAAAEhBlDwAAAAASEGUPAAAAABIQZQ8AAAAAEhBlDwAAScFgUAsW\nLNDTTz89fN3vf/97Pffccxe874YNG/TTn/50POMBAPCVUfYAAJD01ltvqaKiQps2bVIkErE6DgAA\nXxtlDwAASevXr9dDDz2k2bNna8uWLV+6fcOGDVq1apUefPBB3XjjjfrhD38ov98/fHtXV5cefvhh\nrVixQnfeeadaWlokSYcOHdLdd9+t7373u7rxxhu1Zs2aWD0lAMAkR9kDAEx6NTU1CgQCuvLKK3Xb\nbbdp/fr1I263e/duPfbYY3r77bf1jW98Q88888zwbfv379fPfvYzbdq0STNnztSrr74qSSouLtaa\nNWv05ptvau3atXrjjTdUW1sbk+cFAJjcKHsAgElv3bp1uuWWW2QYhq6//nrt27fvrKN2p11++eWa\nMWOGJOmOO+7Qjh07hm9btGiRCgsLJUkVFRU6ceKEJKm3t1c///nPtXLlSt11111qbm5WTU1NDJ4V\nAGCyc1gdAAAAK0UiEb311ltKSkrSP/7xD0lSf3+/NmzY8JX2k5ycPHzZbrdrcHBQkvTiiy/K6/Xq\nf/7nf+RwOPSjH/1IfX19Y/cEAAA4B47sAQAmtS1btmj69Ol6//339e677+rdd9/VX/7yF7355ptf\n2nbPnj06duyYpKE1fldeeeUF99/Z2amCggI5HA4dPnxYu3btGuunAADAiDiyBwCY1NavX6+VK1ee\ndd1ll12maDSqnTt3at68ecPXL1q0SM8995yOHz+u3NxcvfDCCxfc/49//GM99thjWrdunaZPn67K\nysoxfw4AAIzEME3TtDoEAAAT3YYNG/Tee+/pd7/7ndVRAAAYFU7jBAAAAIAExJE9AAAAAEhAHNkD\nAAAAgARE2QMAAACABETZAwAAAIAERNkDAAAAgARE2QMAAACABPT/Adm3CQdixba9AAAAAElFTkSu\nQmCC\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x7fee74d1ac18>" | |
| ] | |
| }, | |
| "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 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment