Created
July 1, 2018 07:02
-
-
Save kengos/fc042637bd7bcefd38ba1c3da82b9856 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": "code", | |
| "execution_count": 1, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "%matplotlib inline\n", | |
| "import matplotlib.pyplot as plt\n", | |
| "import numpy as np" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "from sklearn.datasets import fetch_mldata\n", | |
| "mnist = fetch_mldata('MNIST original')\n", | |
| "\n", | |
| "X, y = mnist['data'], mnist['target']" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<matplotlib.image.AxesImage at 0x1a1e696b70>" | |
| ] | |
| }, | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x1a12d36f28>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "image = X[0].reshape(28, 28)\n", | |
| "plt.imshow(image, cmap = 'gray')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "from scipy.ndimage.interpolation import shift\n", | |
| "# see https://docs.scipy.org/doc/scipy-1.1.0/reference/generated/scipy.ndimage.shift.html#scipy.ndimage.shift" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<matplotlib.image.AxesImage at 0x1a1e6da780>" | |
| ] | |
| }, | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAADfZJREFUeJzt3WGIHPUZx/Hfo21ETSNqq4km1rbE\n0iJ6MWcQlJpaLFYDSZFogngplJ4vGrBSpCrR5IVFkWhbBYtXezTBNImatolQa8UTbUHEM4Zqm1pF\n0vSa4y5RMRcEg8nTFzcpZ7z9z2V3Zmfunu8HZHfn2dl53NzvZvb+s/M3dxeAeI6rugEA1SD8QFCE\nHwiK8ANBEX4gKMIPBEX4gaAIPxAU4QeC+kw7N2ZmnE4IlMzdbSLPa2nPb2ZXmdmbZva2md3WymsB\naC9r9tx+Mzte0r8kXSlpQNIrkpa7+z8S67DnB0rWjj3/Aklvu/s77n5Q0iZJi1t4PQBt1Er4z5b0\nnzGPB7Jln2Bm3WbWb2b9LWwLQMFa+YPfeIcWnzqsd/ceST0Sh/1AnbSy5x+QNGfM49mS9rTWDoB2\naSX8r0iaa2ZfMrNpkpZJ2lZMWwDK1vRhv7t/bGYrJT0j6XhJve7+98I6A1Cqpof6mtoYn/mB0rXl\nJB8AkxfhB4Ii/EBQhB8IivADQRF+ICjCDwRF+IGgCD8QFOEHgiL8QFCEHwiK8ANBEX4gKMIPBEX4\ngaAIPxAU4QeCIvxAUIQfCIrwA0ERfiAowg8ERfiBoAg/EBThB4Ii/EBQhB8IivADQTU9Rbckmdku\nSSOSDkn62N07i2gKQPlaCn/mm+6+r4DXAdBGHPYDQbUafpf0ZzN71cy6i2gIQHu0eth/qbvvMbMz\nJD1rZv909xfHPiH7pcAvBqBmzN2LeSGzNZIOuPvaxHOK2RiAhtzdJvK8pg/7zexkM/vckfuSvi3p\njWZfD0B7tXLYf6ak35vZkdf5rbv/qZCuAJSusMP+CW2Mw36gdKUf9gOY3Ag/EBThB4Ii/EBQhB8I\nivADQRF+ICjCDwRF+IGgCD8QFOEHgiL8QFCEHwiK8ANBEX4gKMIPBEX4gaAIPxAU4QeCIvxAUIQf\nCIrwA0EVMUsvAps/f36yvnLlyoa1rq6u5Lrr169P1h966KFkffv27cl6dOz5gaAIPxAU4QeCIvxA\nUIQfCIrwA0ERfiCo3Cm6zaxX0iJJw+5+frbsNEmbJZ0raZek69z9/dyNMUX3pNPR0ZGs9/X1Jesz\nZswosp1P+OCDD5L1008/vbRt11mRU3T/RtJVRy27TdJz7j5X0nPZYwCTSG743f1FSe8dtXixpHXZ\n/XWSlhTcF4CSNfuZ/0x3H5Sk7PaM4loC0A6ln9tvZt2SusveDoBj0+yef8jMZklSdjvc6Inu3uPu\nne7e2eS2AJSg2fBvk7Qiu79C0tZi2gHQLrnhN7ONkl6S9FUzGzCz70u6V9KVZvaWpCuzxwAmkdxx\n/kI3xjh/7SxYsCBZ37JlS7J+1llnJeupn6+RkZHkugcPHkzW88bxL7vssoa1vO/65227zooc5wcw\nBRF+ICjCDwRF+IGgCD8QFOEHgmKobwo46aSTGtYuuuii5LqPPfZYsj579uxk3Sw9qpT6+cobbrvv\nvvuS9U2bNiXrqd5WrVqVXPeee+5J1uuMoT4ASYQfCIrwA0ERfiAowg8ERfiBoAg/EBRTdE8Bjzzy\nSMPa8uXL29jJsck7B2H69OnJ+gsvvJCsL1y4sGHtggsuSK4bAXt+ICjCDwRF+IGgCD8QFOEHgiL8\nQFCEHwiKcf5JYP78+cn6Nddc07CW9337PHlj6U899VSyvnbt2oa1PXv2JNd97bXXkvX330/PCn/F\nFVc0rLX6vkwF7PmBoAg/EBThB4Ii/EBQhB8IivADQRF+IKjc6/abWa+kRZKG3f38bNkaST+QtDd7\n2h3u/sfcjXHd/nF1dHQk6319fcn6jBkzmt72008/naznXQ/g8ssvT9ZT35t/9NFHk+vu3bs3Wc9z\n6NChhrUPP/wwuW7e/1fenANVKvK6/b+RdNU4y3/m7h3Zf7nBB1AvueF39xclvdeGXgC0USuf+Vea\n2d/MrNfMTi2sIwBt0Wz4fynpK5I6JA1Kur/RE82s28z6zay/yW0BKEFT4Xf3IXc/5O6HJf1K0oLE\nc3vcvdPdO5ttEkDxmgq/mc0a8/C7kt4oph0A7ZL7lV4z2yhpoaTPm9mApNWSFppZhySXtEvSTSX2\nCKAEueP8hW4s6Dj/eeedl6yvXr06WV+2bFmyvm/fvoa1wcHB5Lp33313sv7kk08m63WWGufP+7nf\nvHlzsn7DDTc01VM7FDnOD2AKIvxAUIQfCIrwA0ERfiAowg8ExaW7C3DCCSck66nLV0vS1VdfnayP\njIwk611dXQ1r/f3ps6pPPPHEZD2qc845p+oWSseeHwiK8ANBEX4gKMIPBEX4gaAIPxAU4QeCYpy/\nAPPmzUvW88bx8yxevDhZz5tGGxgPe34gKMIPBEX4gaAIPxAU4QeCIvxAUIQfCIpx/gI88MADybpZ\n+krKeeP0jOM357jjGu/bDh8+3MZO6ok9PxAU4QeCIvxAUIQfCIrwA0ERfiAowg8ElTvOb2ZzJK2X\nNFPSYUk97v4LMztN0mZJ50raJek6d3+/vFartWjRooa1jo6O5Lp500Fv27atqZ6QlhrLz/s32bFj\nR9Ht1M5E9vwfS/qxu39N0iWSfmhmX5d0m6Tn3H2upOeyxwAmidzwu/ugu2/P7o9I2inpbEmLJa3L\nnrZO0pKymgRQvGP6zG9m50qaJ+llSWe6+6A0+gtC0hlFNwegPBM+t9/MpkvaIulH7r4/73z1Met1\nS+purj0AZZnQnt/MPqvR4G9w999li4fMbFZWnyVpeLx13b3H3TvdvbOIhgEUIzf8NrqL/7Wkne4+\n9utr2yStyO6vkLS1+PYAlGUih/2XSrpR0utmdmT84w5J90p63My+L2m3pKXltFgPqamsp02bllx3\neHjcg6L/27x5c1M9TXV5U5+vWbOm6dfu6+tL1m+//famX3uyyA2/u/9VUqMP+N8qth0A7cIZfkBQ\nhB8IivADQRF+ICjCDwRF+IGguHR3G3z00UfJ+uDgYJs6qZe8cfxVq1Yl67feemuyPjAw0LB2//33\nJ9c9cOBAsj4VsOcHgiL8QFCEHwiK8ANBEX4gKMIPBEX4gaAY52+DyJfmTl3WPG+c/vrrr0/Wt25N\nXz/m2muvTdajY88PBEX4gaAIPxAU4QeCIvxAUIQfCIrwA0Exzj9BqenJ8qYuW7IkPYfpzTff3FRP\ndXDLLbck63feeWfD2imnnJJcd8OGDcl6V1dXso409vxAUIQfCIrwA0ERfiAowg8ERfiBoAg/EFTu\nOL+ZzZG0XtJMSYcl9bj7L8xsjaQfSNqbPfUOd/9jWY1Wzd2bqknSzJkzk/UHH3wwWe/t7U3W3333\n3Ya1Sy65JLnujTfemKxfeOGFyfrs2bOT9d27dzesPfPMM8l1H3744WQdrZnIST4fS/qxu283s89J\netXMns1qP3P3teW1B6AsueF390FJg9n9ETPbKensshsDUK5j+sxvZudKmifp5WzRSjP7m5n1mtmp\nDdbpNrN+M+tvqVMAhZpw+M1suqQtkn7k7vsl/VLSVyR1aPTIYNzJz9y9x9073b2zgH4BFGRC4Tez\nz2o0+Bvc/XeS5O5D7n7I3Q9L+pWkBeW1CaBoueG30a+s/VrSTnd/YMzyWWOe9l1JbxTfHoCyWN4w\nlZldJukvkl7X6FCfJN0hablGD/ld0i5JN2V/HEy9VnpjNbZ06dKGtY0bN5a67aGhoWR9//79DWtz\n584tup1PeOmll5L1559/vmHtrrvuKrodSHL39HfMMxP5a/9fJY33YlN2TB+IgDP8gKAIPxAU4QeC\nIvxAUIQfCIrwA0HljvMXurFJPM6f+urqE088kVz34osvbmnbeZcGb+XfMPV1YEnatGlTsj6ZLzs+\nVU10nJ89PxAU4QeCIvxAUIQfCIrwA0ERfiAowg8E1e5x/r2S/j1m0ecl7WtbA8emrr3VtS+J3ppV\nZG9fdPcvTOSJbQ3/pzZu1l/Xa/vVtbe69iXRW7Oq6o3DfiAowg8EVXX4eyrefkpde6trXxK9NauS\n3ir9zA+gOlXv+QFUpJLwm9lVZvammb1tZrdV0UMjZrbLzF43sx1VTzGWTYM2bGZvjFl2mpk9a2Zv\nZbfjTpNWUW9rzOy/2Xu3w8yurqi3OWb2vJntNLO/m9nN2fJK37tEX5W8b20/7Dez4yX9S9KVkgYk\nvSJpubv/o62NNGBmuyR1unvlY8Jm9g1JByStd/fzs2X3SXrP3e/NfnGe6u4/qUlvayQdqHrm5mxC\nmVljZ5aWtETS91The5fo6zpV8L5VsedfIOltd3/H3Q9K2iRpcQV91J67vyjpvaMWL5a0Lru/TqM/\nPG3XoLdacPdBd9+e3R+RdGRm6Urfu0Rflagi/GdL+s+YxwOq15TfLunPZvaqmXVX3cw4zjwyM1J2\ne0bF/Rwtd+bmdjpqZunavHfNzHhdtCrCP94lhuo05HCpu18k6TuSfpgd3mJiJjRzc7uMM7N0LTQ7\n43XRqgj/gKQ5Yx7PlrSngj7G5e57stthSb9X/WYfHjoySWp2O1xxP/9Xp5mbx5tZWjV47+o043UV\n4X9F0lwz+5KZTZO0TNK2Cvr4FDM7OftDjMzsZEnfVv1mH94maUV2f4WkrRX28gl1mbm50czSqvi9\nq9uM15Wc5JMNZfxc0vGSet39p21vYhxm9mWN7u2l0UlMf1tlb2a2UdJCjX7ra0jSakl/kPS4pHMk\n7Za01N3b/oe3Br0t1DHO3FxSb41mln5ZFb53Rc54XUg/nOEHxMQZfkBQhB8IivADQRF+ICjCDwRF\n+IGgCD8QFOEHgvofxyQlKefLBZMAAAAASUVORK5CYII=\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x1a1e7eee10>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "# 下に5px\n", | |
| "new_image = shift(image, [5, 0], cval=0, mode=\"constant\")\n", | |
| "plt.imshow(new_image, cmap = 'gray')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<matplotlib.image.AxesImage at 0x1a1e961358>" | |
| ] | |
| }, | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": "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\nwg8ERfiBoAg/EBThB4Ii/EBQueE3swvMbJuZ7TCz98xsRbZ8lZn918zeyv5cV367AIpi7p5+gFmH\npA53325mZ0l6Q9IiSd+RdNDdH6x7Y2bpjQFomrtbPY87vY4nGpA0kN0eMrMdks5vrj0AVTupc34z\nu1DSbEmvZYtuNbO/mlmPmU2tsU6XmfWZWV9TnQIoVO5h//8faDZJ0suSfuruvzezaZL2SXJJP9Hw\nqcH3cp6Dw36gZPUe9tcVfjP7nKTnJG1199Wj1C+U9Jy7X5LzPIQfKFm94a/n3X6T9CtJO0YGP3sj\n8JhvS3r3ZJsEUJ163u3/qqS/SHpH0tFs8V2Slkrq1PBh/y5Jt2RvDqaeiz0/ULJCD/uLQviB8hV2\n2A9gbCL8QFCEHwiK8ANBEX4gKMIPBEX4gaAIPxAU4QeCIvxAUIQfCIrwA0ERfiAowg8ElXsBz4Lt\nk/TvEfc/ny1rR+3aW7v2JdFbo4rs7Qv1PrCl3+f/zMbN+tx9TmUNJLRrb+3al0RvjaqqNw77gaAI\nPxBU1eFfW/H2U9q1t3btS6K3RlXSW6Xn/ACqU/WeH0BFKgm/mV1rZv8ws51mdkcVPdRiZrvM7J1s\n5uFKpxjLpkEbNLN3Ryw728xeNLP3s5+jTpNWUW9tMXNzYmbpSl+7dpvxuuWH/WY2TtI/JV0jqV/S\n65KWuvvfWtpIDWa2S9Icd698TNjMvibpoKTfHJsNycwekLTf3e/PfnFOdfcft0lvq3SSMzeX1Fut\nmaW/qwpfuyJnvC5CFXv+uZJ2uvu/3P2QpA2SFlbQR9tz91ck7T9h8UJJ67Lb6zT8n6flavTWFtx9\nwN23Z7eHJB2bWbrS1y7RVyWqCP/5kv4z4n6/2mvKb5f0JzN7w8y6qm5mFNOOzYyU/Ty34n5OlDtz\ncyudMLN027x2jcx4XbQqwj/abCLtNOTwFXe/XNK3JP0wO7xFfdZI+rKGp3EbkPRQlc1kM0tvkvQj\ndz9QZS8jjdJXJa9bFeHvl3TBiPvTJe2poI9Rufue7OegpGc0fJrSTvYemyQ1+zlYcT//5+573f2I\nux+V9EtV+NplM0tvkvSku/8+W1z5azdaX1W9blWE/3VJM83si2Y2XtISSVsq6OMzzOzM7I0YmdmZ\nkr6p9pt9eIuk5dnt5ZI2V9jLcdpl5uZaM0ur4teu3Wa8ruRDPtlQxs8ljZPU4+4/bXkTozCzL2l4\nby8Nf+Pxt1X2ZmbrJc3X8Le+9kpaKekPkn4naYak3ZIWu3vL33ir0dt8neTMzSX1Vmtm6ddU4WtX\n5IzXhfTDJ/yAmPiEHxAU4QeCIvxAUIQfCIrwA0ERfiAowg8ERfiBoP4HaFM9VVhDugAAAAAASUVO\nRK5CYII=\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x1a1e817908>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "# 上に5px\n", | |
| "new_image = shift(image, [-5, 0], cval=0, mode=\"constant\")\n", | |
| "plt.imshow(new_image, cmap = 'gray')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<matplotlib.image.AxesImage at 0x1a1ea8dd68>" | |
| ] | |
| }, | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAADjBJREFUeJzt3XGMVeWZx/Hfoy1EpRi1EUeRpdtg\n043RQUZiUrKybmxcJYHGoPCHw2Y3O/xREms2ZtWMQrI2NkbZVROJVCeFSIEqumCzLm3EaDcxxhFN\ntcW2hLB0lsmMiJFBEonw7B9z2Aw45z137j33nss8309C5t7z3HPP43V+c86977nnNXcXgHjOqboB\nANUg/EBQhB8IivADQRF+ICjCDwRF+IGgCD8QFOEHgvpaKzdmZpxOCDSZu1stj2toz29mt5jZH8xs\nr5nd18hzAWgtq/fcfjM7V9IfJd0saUDSO5KWu/vvE+uw5wearBV7/vmS9rr7Pnc/LmmLpMUNPB+A\nFmok/FdI+vOY+wPZstOYWY+Z9ZtZfwPbAlCyRj7wG+/Q4iuH9e6+XtJ6icN+oJ00sucfkHTlmPsz\nJR1srB0ArdJI+N+RNMfMvmVmUyQtk7SjnLYANFvdh/3u/qWZrZK0U9K5kvrc/XeldQagqeoe6qtr\nY7znB5quJSf5ADh7EX4gKMIPBEX4gaAIPxAU4QeCIvxAUIQfCIrwA0ERfiAowg8ERfiBoAg/EBTh\nB4Ii/EBQhB8IivADQRF+ICjCDwRF+IGgCD8QVEun6AZaad68ebm1VatWJdft7u5O1jdu3JisP/XU\nU8n67t27k/VWYM8PBEX4gaAIPxAU4QeCIvxAUIQfCIrwA0E1NEuvme2XNCLphKQv3b2r4PHM0ovS\ndHZ2Juu7du3KrU2fPr3sdk7z2WefJeuXXHJJ07Zd6yy9ZZzk8zfufqiE5wHQQhz2A0E1Gn6X9Csz\ne9fMespoCEBrNHrY/z13P2hml0r6tZl95O5vjn1A9keBPwxAm2loz+/uB7Ofw5JeljR/nMesd/eu\nog8DAbRW3eE3swvM7Bunbkv6vqQPy2oMQHM1ctg/Q9LLZnbqeX7u7v9VSlcAmq6hcf4Jb4xxfkzA\n/PlfeRd5mm3btiXrl19+eW6t6Pd+ZGQkWT9+/HiyXjSOv2DBgtxa0Xf9i7Zd6zg/Q31AUIQfCIrw\nA0ERfiAowg8ERfiBoBjqQ1Odf/75ubXrrrsuue7zzz+frM+cOTNZz85BGVfR733RcNujjz6arG/Z\nsiVZT/XW29ubXPeRRx5J1hnqA5BE+IGgCD8QFOEHgiL8QFCEHwiK8ANBMUU3muqZZ57JrS1fvryF\nnUxM0TkI06ZNS9bfeOONZH3hwoW5tWuuuSa5blnY8wNBEX4gKMIPBEX4gaAIPxAU4QeCIvxAUIzz\noyHz5s1L1m+77bbcWuo77bUoGkt/5ZVXcmuPPfZYct2DBw8m6++9916y/umnnybrN910U26t0del\nVuz5gaAIPxAU4QeCIvxAUIQfCIrwA0ERfiCowuv2m1mfpEWSht396mzZxZK2Spotab+kO9w9PbAp\nrtt/Nurs7EzWd+3alaxPnz697m2/+uqryXrR9QBuvPHG3FrRd+afffbZZP3jjz9O1oucOHEit3bs\n2LHkuqn/ro8++kiff/55adft/5mkW85Ydp+k19x9jqTXsvsAziKF4Xf3NyUdPmPxYkkbstsbJC0p\nuS8ATVbve/4Z7j4oSdnPS8trCUArNP3cfjPrkdTT7O0AmJh69/xDZtYhSdnP4bwHuvt6d+9y9646\ntwWgCeoN/w5JK7LbKyRtL6cdAK1SGH4z2yzpLUnfMbMBM/tHST+RdLOZ/UnSzdl9AGeRwnH+UjfG\nOH/bueqqq5L11atXJ+vLli1L1g8dOpRbGxwcTK778MMPJ+svvvhist7OUuP8RZncunVrbq23t1f7\n9u0rbZwfwCRE+IGgCD8QFOEHgiL8QFCEHwiKS3dPclOnTk3Wiy5hfeuttybrIyMjyXp3d3durb+/\nP7nueeedl6xHNWvWrNzalClTan4e9vxAUIQfCIrwA0ERfiAowg8ERfiBoAg/EBTj/JPc3Llzk/Wi\ncfwiixcvTtaLptFGddjzA0ERfiAowg8ERfiBoAg/EBThB4Ii/EBQjPNPcmvXrk3WzdJXeS4ap2cc\nvz7nnJO/3z158mRremjJVgC0HcIPBEX4gaAIPxAU4QeCIvxAUIQfCKpwnN/M+iQtkjTs7ldny9ZI\n+idJH2cPe8Dd/7NZTSJt0aJFubXOzs7kukXTQe/YsaOunpCWGssv+n/y/vvv59aOHTtWcw+17Pl/\nJumWcZb/m7t3Zv8IPnCWKQy/u78p6XALegHQQo28519lZr81sz4zu6i0jgC0RL3hXyfp25I6JQ1K\nejzvgWbWY2b9ZpaemA1AS9UVfncfcvcT7n5S0k8lzU88dr27d7l7V71NAihfXeE3s44xd38g6cNy\n2gHQKrUM9W2WtFDSN81sQNJqSQvNrFOSS9ovaWUTewTQBIXhd/fl4yx+rgm9oE6peeyL5msfHh5O\n1rdu3VpXT5Pd1KlTk/U1a9bU/dy7du1K1u+///7cWtnj/AAmIcIPBEX4gaAIPxAU4QeCIvxAUFy6\nO7gvvvgiWR8cHGxRJ+2laCivt7c3Wb/33nuT9YGBgdza44/nni0vSTp69GiyXiv2/EBQhB8IivAD\nQRF+ICjCDwRF+IGgCD8QFOP8wUW9NHfRJc2LxunvvPPOZH379u3J+u23356stwJ7fiAowg8ERfiB\noAg/EBThB4Ii/EBQhB8IinH+ScDM6qpJ0pIlS5L1u+++u66e2sE999yTW3vwwQeT61544YXJ+qZN\nm5L17u7uZL0dsOcHgiL8QFCEHwiK8ANBEX4gKMIPBEX4gaAKx/nN7EpJGyVdJumkpPXu/oSZXSxp\nq6TZkvZLusPdP21eq8jj7nXVJOmyyy5L1p988slkva+vL1n/5JNPcms33HBDct277rorWb/22muT\n9ZkzZ+bWDhw4kFx3586dyfrTTz+drJ8Natnzfynpn939u5JukPRDM/srSfdJes3d50h6LbsP4CxR\nGH53H3T33dntEUl7JF0habGkDdnDNkhKnyoGoK1M6D2/mc2WNFfS25JmuPugNPoHQtKlZTcHoHlq\nPrffzKZJ2ibpR+5+pOic8THr9Ujqqa89AM1S057fzL6u0eBvcveXssVDZtaR1TskDY+3rruvd/cu\nd+8qo2EA5SgMv43u4p+TtMfd144p7ZC0Iru9QlL6cqUA2ooVDQWZ2QJJv5H0gUaH+iTpAY2+7/+F\npFmSDkha6u6HC54rvTHUZenSpbm1zZs3N3XbQ0NDyfqRI0dya3PmzCm7ndO89dZbubXXX389ue5D\nDz1Udjst4+41vScvfM/v7v8tKe/J/nYiTQFoH5zhBwRF+IGgCD8QFOEHgiL8QFCEHwiqcJy/1I0x\nzt8Uqa+uvvDCC8l1r7/++oa2XXSadyO/X6mvA0vSli1bkvWz+bLjjah1nJ89PxAU4QeCIvxAUIQf\nCIrwA0ERfiAowg8ExTj/JNfR0ZGsr1y5Mlnv7e1N1hsZ53/iiSeS665bty5Z37t3b7IeFeP8AJII\nPxAU4QeCIvxAUIQfCIrwA0ERfiAoxvmBSYZxfgBJhB8IivADQRF+ICjCDwRF+IGgCD8QVGH4zexK\nM3vdzPaY2e/M7O5s+Roz+18zez/7d2vz2wVQlsKTfMysQ1KHu+82s29IelfSEkl3SDrq7o/VvDFO\n8gGartaTfL5WwxMNShrMbo+Y2R5JVzTWHoCqTeg9v5nNljRX0tvZolVm9lsz6zOzi3LW6TGzfjPr\nb6hTAKWq+dx+M5sm6Q1JP3b3l8xshqRDklzSv2r0rcE/FDwHh/1Ak9V62F9T+M3s65J+KWmnu68d\npz5b0i/d/eqC5yH8QJOV9sUeG70863OS9owNfvZB4Ck/kPThRJsEUJ1aPu1fIOk3kj6QdDJb/ICk\n5ZI6NXrYv1/SyuzDwdRzsecHmqzUw/6yEH6g+fg+P4Akwg8ERfiBoAg/EBThB4Ii/EBQhB8IivAD\nQRF+ICjCDwRF+IGgCD8QFOEHgiL8QFCFF/As2SFJ/zPm/jezZe2oXXtr174keqtXmb39Ra0PbOn3\n+b+ycbN+d++qrIGEdu2tXfuS6K1eVfXGYT8QFOEHgqo6/Osr3n5Ku/bWrn1J9FavSnqr9D0/gOpU\nvecHUJFKwm9mt5jZH8xsr5ndV0UPecxsv5l9kM08XOkUY9k0aMNm9uGYZReb2a/N7E/Zz3GnSauo\nt7aYuTkxs3Slr127zXjd8sN+MztX0h8l3SxpQNI7kpa7++9b2kgOM9svqcvdKx8TNrO/lnRU0sZT\nsyGZ2aOSDrv7T7I/nBe5+7+0SW9rNMGZm5vUW97M0n+vCl+7Mme8LkMVe/75kva6+z53Py5pi6TF\nFfTR9tz9TUmHz1i8WNKG7PYGjf7ytFxOb23B3QfdfXd2e0TSqZmlK33tEn1VoorwXyHpz2PuD6i9\npvx2Sb8ys3fNrKfqZsYx49TMSNnPSyvu50yFMze30hkzS7fNa1fPjNdlqyL8480m0k5DDt9z9+sk\n/Z2kH2aHt6jNOknf1ug0boOSHq+ymWxm6W2SfuTuR6rsZaxx+qrkdasi/AOSrhxzf6akgxX0MS53\nP5j9HJb0skbfprSToVOTpGY/hyvu5/+5+5C7n3D3k5J+qgpfu2xm6W2SNrn7S9niyl+78fqq6nWr\nIvzvSJpjZt8ysymSlknaUUEfX2FmF2QfxMjMLpD0fbXf7MM7JK3Ibq+QtL3CXk7TLjM3580srYpf\nu3ab8bqSk3yyoYx/l3SupD53/3HLmxiHmf2lRvf20ug3Hn9eZW9mtlnSQo1+62tI0mpJ/yHpF5Jm\nSTogaam7t/yDt5zeFmqCMzc3qbe8maXfVoWvXZkzXpfSD2f4ATFxhh8QFOEHgiL8QFCEHwiK8ANB\nEX4gKMIPBEX4gaD+D7w0T8cas5d8AAAAAElFTkSuQmCC\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x1a1e9d1208>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "# 右に5px\n", | |
| "new_image = shift(image, [0, 5], cval=0, mode=\"constant\")\n", | |
| "plt.imshow(new_image, cmap = 'gray')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<matplotlib.image.AxesImage at 0x1a1eb0b7b8>" | |
| ] | |
| }, | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": "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\nhB8I6v8AlztJ8Zsp0mkAAAAASUVORK5CYII=\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x1a1e9f1860>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "# 左に5px\n", | |
| "new_image = shift(image, [0, -5], cval=0, mode=\"constant\")\n", | |
| "plt.imshow(new_image, cmap = 'gray')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<matplotlib.image.AxesImage at 0x1a1ec5fdd8>" | |
| ] | |
| }, | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x1a1eaef710>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "def shift_image(image, dx, dy):\n", | |
| " return shift(image.reshape(28, 28), [dy, dx], cval=0, mode=\"constant\").reshape(-1)\n", | |
| "\n", | |
| "def shift_image_1px(image):\n", | |
| " return [\n", | |
| " shift_image(image, 1, 0),\n", | |
| " shift_image(image, -1, 0),\n", | |
| " shift_image(image, 0, 1),\n", | |
| " shift_image(image, 0, -1)\n", | |
| " ]\n", | |
| "\n", | |
| "augmented = shift_image_1px(X[0])\n", | |
| "\n", | |
| "plt.figure(figsize=(8,8))\n", | |
| "plt.subplot(221) ; plt.imshow(augmented[0].reshape(28, 28), cmap = 'gray')\n", | |
| "plt.subplot(222) ; plt.imshow(augmented[1].reshape(28, 28), cmap = 'gray')\n", | |
| "plt.subplot(223) ; plt.imshow(augmented[2].reshape(28, 28), cmap = 'gray')\n", | |
| "plt.subplot(224) ; plt.imshow(augmented[3].reshape(28, 28), cmap = 'gray')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "60000 60000\n", | |
| "300000 300000\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]\n", | |
| "print(len(X_train), len(y_train))\n", | |
| "\n", | |
| "X_train_augmented = []\n", | |
| "y_train_augmented = []\n", | |
| "\n", | |
| "for image, label in zip(X_train, y_train):\n", | |
| " X_train_augmented.append(image)\n", | |
| " X_train_augmented.extend(shift_image_1px(image))\n", | |
| " y_train_augmented.extend([label] * 5)\n", | |
| "\n", | |
| "X_train_augmented = np.array(X_train_augmented)\n", | |
| "y_train_augmented = np.array(y_train_augmented)\n", | |
| "print(len(X_train_augmented), len(y_train_augmented))\n", | |
| "\n", | |
| "from sklearn.preprocessing import StandardScaler\n", | |
| "\n", | |
| "scaler = StandardScaler()\n", | |
| "X_train_scaled = scaler.fit_transform(X_train.astype(np.float64))\n", | |
| "X_train_augmented_scaled = scaler.fit_transform(X_train_augmented.astype(np.float64))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "source": [ | |
| "### SGDClassifier" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "import time\n", | |
| "from sklearn.linear_model import SGDClassifier\n", | |
| "from sklearn.metrics import accuracy_score\n", | |
| "from sklearn.model_selection import cross_val_score\n", | |
| "\n", | |
| "sgd_clf = SGDClassifier(random_state=42)\n", | |
| "sgd_scores = []" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "/Users/kengos/.asdf/installs/python/anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/linear_model/stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n", | |
| " \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n", | |
| "/Users/kengos/.asdf/installs/python/anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/linear_model/stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n", | |
| " \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n", | |
| "/Users/kengos/.asdf/installs/python/anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/linear_model/stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n", | |
| " \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# スケーリングなし、データ拡張なし\n", | |
| "\n", | |
| "start = time.time()\n", | |
| "scores = cross_val_score(sgd_clf, X_train, y_train, cv=3, scoring=\"accuracy\")\n", | |
| "elapsed_time = time.time() - start\n", | |
| "sgd_scores.append({\n", | |
| " 'scaling': False, 'augmentation': False, 'score': scores, 'time': elapsed_time\n", | |
| "})" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 13, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "/Users/kengos/.asdf/installs/python/anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/linear_model/stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n", | |
| " \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n", | |
| "/Users/kengos/.asdf/installs/python/anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/linear_model/stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n", | |
| " \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n", | |
| "/Users/kengos/.asdf/installs/python/anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/linear_model/stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n", | |
| " \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# スケーリングなし、データ拡張あり\n", | |
| "\n", | |
| "start = time.time()\n", | |
| "scores = cross_val_score(sgd_clf, X_train_augmented, y_train_augmented, cv=3, scoring=\"accuracy\")\n", | |
| "elapsed_time = time.time() - start\n", | |
| "sgd_scores.append({\n", | |
| " 'scaling': False, 'augmentation': True, 'score': scores, 'time': elapsed_time\n", | |
| "})" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 14, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "/Users/kengos/.asdf/installs/python/anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/linear_model/stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n", | |
| " \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n", | |
| "/Users/kengos/.asdf/installs/python/anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/linear_model/stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n", | |
| " \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n", | |
| "/Users/kengos/.asdf/installs/python/anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/linear_model/stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n", | |
| " \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# スケーリングあり、データ拡張なし\n", | |
| "\n", | |
| "start = time.time()\n", | |
| "scores = cross_val_score(sgd_clf, X_train_scaled, y_train, cv=3, scoring=\"accuracy\")\n", | |
| "elapsed_time = time.time() - start\n", | |
| "sgd_scores.append({\n", | |
| " 'scaling': True, 'augmentation': False, 'score': scores, 'time': elapsed_time\n", | |
| "})" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 15, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "/Users/kengos/.asdf/installs/python/anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/linear_model/stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n", | |
| " \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n", | |
| "/Users/kengos/.asdf/installs/python/anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/linear_model/stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n", | |
| " \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n", | |
| "/Users/kengos/.asdf/installs/python/anaconda3-5.0.1/lib/python3.6/site-packages/sklearn/linear_model/stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n", | |
| " \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# スケーリングあり、データ拡張あり\n", | |
| "\n", | |
| "start = time.time()\n", | |
| "scores = cross_val_score(sgd_clf, X_train_augmented_scaled, y_train_augmented, cv=3, scoring=\"accuracy\")\n", | |
| "elapsed_time = time.time() - start\n", | |
| "sgd_scores.append({\n", | |
| " 'scaling': True, 'augmentation': True, 'score': scores, 'time': elapsed_time\n", | |
| "})" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 16, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "{'scaling': False, 'augmentation': False, 'score': array([ 0.86157768, 0.86489324, 0.87918188]), 'time': 7.268235206604004}\n", | |
| "{'scaling': False, 'augmentation': True, 'score': array([ 0.82291531, 0.82563174, 0.83683347]), 'time': 39.99974584579468}\n", | |
| "{'scaling': True, 'augmentation': False, 'score': array([ 0.9070186 , 0.90659533, 0.91193679]), 'time': 9.080463171005249}\n", | |
| "{'scaling': True, 'augmentation': True, 'score': array([ 0.87747368, 0.87758122, 0.88434537]), 'time': 41.972216844558716}\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "for i, scores in enumerate(sgd_scores):\n", | |
| " print(scores)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 17, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "from sklearn.ensemble import RandomForestClassifier\n", | |
| "\n", | |
| "forest_clf = RandomForestClassifier(random_state=42)\n", | |
| "forest_scores = []" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# スケーリングなし、データ拡張なし\n", | |
| "start = time.time()\n", | |
| "scores = cross_val_score(forest_clf, X_train, y_train, cv=3, scoring=\"accuracy\")\n", | |
| "elapsed_time = time.time() - start\n", | |
| "forest_scores.append({\n", | |
| " 'scaling': False, 'augmentation': False, 'score': scores, 'time': elapsed_time\n", | |
| "})" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 19, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# スケーリングあり、データ拡張なし\n", | |
| "start = time.time()\n", | |
| "scores = cross_val_score(forest_clf, X_train_scaled, y_train, cv=3, scoring=\"accuracy\")\n", | |
| "elapsed_time = time.time() - start\n", | |
| "forest_scores.append({\n", | |
| " 'scaling': True, 'augmentation': False, 'score': scores, 'time': elapsed_time\n", | |
| "})" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 20, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# スケーリングなし、データ拡張あり\n", | |
| "start = time.time()\n", | |
| "scores = cross_val_score(forest_clf, X_train_augmented, y_train_augmented, cv=3, scoring=\"accuracy\")\n", | |
| "elapsed_time = time.time() - start\n", | |
| "forest_scores.append({\n", | |
| " 'scaling': False, 'augmentation': True, 'score': scores, 'time': elapsed_time\n", | |
| "})" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 21, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# スケーリングあり、データ拡張あり\n", | |
| "start = time.time()\n", | |
| "scores = cross_val_score(forest_clf, X_train_augmented_scaled, y_train_augmented, cv=3, scoring=\"accuracy\")\n", | |
| "elapsed_time = time.time() - start\n", | |
| "forest_scores.append({\n", | |
| " 'scaling': True, 'augmentation': True, 'score': scores, 'time': elapsed_time\n", | |
| "})" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 22, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "{'scaling': False, 'augmentation': False, 'score': array([ 0.9365127 , 0.93934697, 0.94234135]), 'time': 8.579495906829834}\n", | |
| "{'scaling': True, 'augmentation': False, 'score': array([ 0.9365127 , 0.93939697, 0.94234135]), 'time': 9.721138954162598}\n", | |
| "{'scaling': False, 'augmentation': True, 'score': array([ 0.95102147, 0.94778052, 0.95098804]), 'time': 67.74460172653198}\n", | |
| "{'scaling': True, 'augmentation': True, 'score': array([ 0.95110147, 0.94772052, 0.95093804]), 'time': 79.73129916191101}\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "for i, scores in enumerate(forest_scores):\n", | |
| " print(scores)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "0.97140000000000004" | |
| ] | |
| }, | |
| "execution_count": 23, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# KNN\n", | |
| "from sklearn.neighbors import KNeighborsClassifier\n", | |
| "from sklearn.metrics import accuracy_score\n", | |
| "\n", | |
| "# データ拡張なし\n", | |
| "knn_clf = KNeighborsClassifier(n_jobs=-1, weights='distance', n_neighbors=4)\n", | |
| "knn_clf.fit(X_train, y_train)\n", | |
| "y_knn_pred = knn_clf.predict(X_test)\n", | |
| "accuracy_score(y_test, y_knn_pred)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# データ拡張あり\n", | |
| "knn_clf = KNeighborsClassifier(n_jobs=-1, weights='distance', n_neighbors=4)\n", | |
| "knn_clf.fit(X_train_augmented, y_train_augmented)\n", | |
| "y_knn_pred = knn_clf.predict(X_test)\n", | |
| "accuracy_score(y_test, y_knn_pred)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python 3", | |
| "language": "python", | |
| "name": "python3" | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 3 | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython3", | |
| "version": "3.6.3" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment