Skip to content

Instantly share code, notes, and snippets.

@Lay4U
Last active June 1, 2019 04:19
Show Gist options
  • Save Lay4U/654f70bd1fb9c4f7d5bdb21ddcb588ab to your computer and use it in GitHub Desktop.
Save Lay4U/654f70bd1fb9c4f7d5bdb21ddcb588ab to your computer and use it in GitHub Desktop.
We can make this file beautiful and searchable if this error is corrected: No commas found in this CSV file in line 0.
https://drive.google.com/open?id=1tTsEtlIJl69OiYKqwYxp0aviE69hJq32
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:21.663591Z",
"start_time": "2019-04-10T00:57:52.097158Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n"
]
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from keras.models import Sequential\n",
"from keras.layers import Dense, LSTM, Dropout\n",
"from keras.layers.core import Dense, Activation, Dropout\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.metrics import mean_squared_error\n",
"\n",
"import winsound\n",
"import tensorflow as tf\n",
"from keras.backend import tensorflow_backend as K\n",
"config = tf.ConfigProto()\n",
"config.gpu_options.allow_growth = True\n",
"K.set_session(tf.Session(config=config))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import numpy\n",
"numpy.set_printoptions(threshold=sys.maxsize)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:37.306592Z",
"start_time": "2019-04-10T00:58:21.667567Z"
}
},
"outputs": [],
"source": [
"df = pd.read_csv('dataset.csv')\n",
"del df['Unnamed: 0']"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:37.367478Z",
"start_time": "2019-04-10T00:58:37.309088Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>number</th>\n",
" <th>name</th>\n",
" <th>div</th>\n",
" <th>a</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>234.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>-420.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>-318.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>-161.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>-205.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>13.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>538.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>632.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>604.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>808.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>565.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>774.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>1292.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>927.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>1205.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>1133.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>2229.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>1840.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>653.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>2008-01-01</td>\n",
" <td>150.0</td>\n",
" <td>서울역</td>\n",
" <td>승차</td>\n",
" <td>-294.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>2008-01-01</td>\n",
" <td>151.0</td>\n",
" <td>시청</td>\n",
" <td>승차</td>\n",
" <td>96.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>2008-01-01</td>\n",
" <td>151.0</td>\n",
" <td>시청</td>\n",
" <td>승차</td>\n",
" <td>-27.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>2008-01-01</td>\n",
" <td>151.0</td>\n",
" <td>시청</td>\n",
" <td>승차</td>\n",
" <td>-102.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>2008-01-01</td>\n",
" <td>151.0</td>\n",
" <td>시청</td>\n",
" <td>승차</td>\n",
" <td>-241.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>2008-01-01</td>\n",
" <td>151.0</td>\n",
" <td>시청</td>\n",
" <td>승차</td>\n",
" <td>-184.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>2008-01-01</td>\n",
" <td>151.0</td>\n",
" <td>시청</td>\n",
" <td>승차</td>\n",
" <td>-258.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>2008-01-01</td>\n",
" <td>151.0</td>\n",
" <td>시청</td>\n",
" <td>승차</td>\n",
" <td>-316.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>2008-01-01</td>\n",
" <td>151.0</td>\n",
" <td>시청</td>\n",
" <td>승차</td>\n",
" <td>-480.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>2008-01-01</td>\n",
" <td>151.0</td>\n",
" <td>시청</td>\n",
" <td>승차</td>\n",
" <td>-645.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>2008-01-01</td>\n",
" <td>151.0</td>\n",
" <td>시청</td>\n",
" <td>승차</td>\n",
" <td>-470.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227830</th>\n",
" <td>2018-12-31</td>\n",
" <td>2826.0</td>\n",
" <td>수진</td>\n",
" <td>승차</td>\n",
" <td>-36.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227831</th>\n",
" <td>2018-12-31</td>\n",
" <td>2826.0</td>\n",
" <td>수진</td>\n",
" <td>승차</td>\n",
" <td>93.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227832</th>\n",
" <td>2018-12-31</td>\n",
" <td>2826.0</td>\n",
" <td>수진</td>\n",
" <td>승차</td>\n",
" <td>-24.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227833</th>\n",
" <td>2018-12-31</td>\n",
" <td>2826.0</td>\n",
" <td>수진</td>\n",
" <td>승차</td>\n",
" <td>-59.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227834</th>\n",
" <td>2018-12-31</td>\n",
" <td>2826.0</td>\n",
" <td>수진</td>\n",
" <td>승차</td>\n",
" <td>-168.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227835</th>\n",
" <td>2018-12-31</td>\n",
" <td>2826.0</td>\n",
" <td>수진</td>\n",
" <td>승차</td>\n",
" <td>-119.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227836</th>\n",
" <td>2018-12-31</td>\n",
" <td>2826.0</td>\n",
" <td>수진</td>\n",
" <td>승차</td>\n",
" <td>-100.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227837</th>\n",
" <td>2018-12-31</td>\n",
" <td>2826.0</td>\n",
" <td>수진</td>\n",
" <td>승차</td>\n",
" <td>-209.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227838</th>\n",
" <td>2018-12-31</td>\n",
" <td>2826.0</td>\n",
" <td>수진</td>\n",
" <td>승차</td>\n",
" <td>-141.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227839</th>\n",
" <td>2018-12-31</td>\n",
" <td>2826.0</td>\n",
" <td>수진</td>\n",
" <td>승차</td>\n",
" <td>126.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227840</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>40.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227841</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>-3.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227842</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>151.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227843</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>96.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227844</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>8.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227845</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>75.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227846</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>54.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227847</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>105.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227848</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>119.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227849</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>215.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227850</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>183.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227851</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>58.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227852</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>56.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227853</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>-53.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227854</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>-50.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227855</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>-24.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227856</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>-36.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227857</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>-46.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227858</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>-19.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21227859</th>\n",
" <td>2018-12-31</td>\n",
" <td>2827.0</td>\n",
" <td>모란</td>\n",
" <td>승차</td>\n",
" <td>-639.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>21227860 rows × 5 columns</p>\n",
"</div>"
],
"text/plain": [
" date number name div a\n",
"0 2008-01-01 150.0 서울역 승차 234.0\n",
"1 2008-01-01 150.0 서울역 승차 -420.0\n",
"2 2008-01-01 150.0 서울역 승차 -318.0\n",
"3 2008-01-01 150.0 서울역 승차 -161.0\n",
"4 2008-01-01 150.0 서울역 승차 -205.0\n",
"5 2008-01-01 150.0 서울역 승차 13.0\n",
"6 2008-01-01 150.0 서울역 승차 538.0\n",
"7 2008-01-01 150.0 서울역 승차 632.0\n",
"8 2008-01-01 150.0 서울역 승차 604.0\n",
"9 2008-01-01 150.0 서울역 승차 808.0\n",
"10 2008-01-01 150.0 서울역 승차 565.0\n",
"11 2008-01-01 150.0 서울역 승차 774.0\n",
"12 2008-01-01 150.0 서울역 승차 1292.0\n",
"13 2008-01-01 150.0 서울역 승차 927.0\n",
"14 2008-01-01 150.0 서울역 승차 1205.0\n",
"15 2008-01-01 150.0 서울역 승차 1133.0\n",
"16 2008-01-01 150.0 서울역 승차 2229.0\n",
"17 2008-01-01 150.0 서울역 승차 1840.0\n",
"18 2008-01-01 150.0 서울역 승차 653.0\n",
"19 2008-01-01 150.0 서울역 승차 -294.0\n",
"20 2008-01-01 151.0 시청 승차 96.0\n",
"21 2008-01-01 151.0 시청 승차 -27.0\n",
"22 2008-01-01 151.0 시청 승차 -102.0\n",
"23 2008-01-01 151.0 시청 승차 -241.0\n",
"24 2008-01-01 151.0 시청 승차 -184.0\n",
"25 2008-01-01 151.0 시청 승차 -258.0\n",
"26 2008-01-01 151.0 시청 승차 -316.0\n",
"27 2008-01-01 151.0 시청 승차 -480.0\n",
"28 2008-01-01 151.0 시청 승차 -645.0\n",
"29 2008-01-01 151.0 시청 승차 -470.0\n",
"... ... ... ... .. ...\n",
"21227830 2018-12-31 2826.0 수진 승차 -36.0\n",
"21227831 2018-12-31 2826.0 수진 승차 93.0\n",
"21227832 2018-12-31 2826.0 수진 승차 -24.0\n",
"21227833 2018-12-31 2826.0 수진 승차 -59.0\n",
"21227834 2018-12-31 2826.0 수진 승차 -168.0\n",
"21227835 2018-12-31 2826.0 수진 승차 -119.0\n",
"21227836 2018-12-31 2826.0 수진 승차 -100.0\n",
"21227837 2018-12-31 2826.0 수진 승차 -209.0\n",
"21227838 2018-12-31 2826.0 수진 승차 -141.0\n",
"21227839 2018-12-31 2826.0 수진 승차 126.0\n",
"21227840 2018-12-31 2827.0 모란 승차 40.0\n",
"21227841 2018-12-31 2827.0 모란 승차 -3.0\n",
"21227842 2018-12-31 2827.0 모란 승차 151.0\n",
"21227843 2018-12-31 2827.0 모란 승차 96.0\n",
"21227844 2018-12-31 2827.0 모란 승차 8.0\n",
"21227845 2018-12-31 2827.0 모란 승차 75.0\n",
"21227846 2018-12-31 2827.0 모란 승차 54.0\n",
"21227847 2018-12-31 2827.0 모란 승차 105.0\n",
"21227848 2018-12-31 2827.0 모란 승차 119.0\n",
"21227849 2018-12-31 2827.0 모란 승차 215.0\n",
"21227850 2018-12-31 2827.0 모란 승차 183.0\n",
"21227851 2018-12-31 2827.0 모란 승차 58.0\n",
"21227852 2018-12-31 2827.0 모란 승차 56.0\n",
"21227853 2018-12-31 2827.0 모란 승차 -53.0\n",
"21227854 2018-12-31 2827.0 모란 승차 -50.0\n",
"21227855 2018-12-31 2827.0 모란 승차 -24.0\n",
"21227856 2018-12-31 2827.0 모란 승차 -36.0\n",
"21227857 2018-12-31 2827.0 모란 승차 -46.0\n",
"21227858 2018-12-31 2827.0 모란 승차 -19.0\n",
"21227859 2018-12-31 2827.0 모란 승차 -639.0\n",
"\n",
"[21227860 rows x 5 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:37.374965Z",
"start_time": "2019-04-10T00:58:37.369475Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Index(['date', 'number', 'name', 'div', 'a'], dtype='object')"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.columns"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:37.391934Z",
"start_time": "2019-04-10T00:58:37.377461Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0 서울역\n",
"1 서울역\n",
"2 서울역\n",
"3 서울역\n",
"4 서울역\n",
"5 서울역\n",
"6 서울역\n",
"7 서울역\n",
"8 서울역\n",
"9 서울역\n",
"10 서울역\n",
"11 서울역\n",
"12 서울역\n",
"13 서울역\n",
"14 서울역\n",
"15 서울역\n",
"16 서울역\n",
"17 서울역\n",
"18 서울역\n",
"19 서울역\n",
"20 시청\n",
"21 시청\n",
"22 시청\n",
"23 시청\n",
"24 시청\n",
"25 시청\n",
"26 시청\n",
"27 시청\n",
"28 시청\n",
"29 시청\n",
" ... \n",
"21227830 수진\n",
"21227831 수진\n",
"21227832 수진\n",
"21227833 수진\n",
"21227834 수진\n",
"21227835 수진\n",
"21227836 수진\n",
"21227837 수진\n",
"21227838 수진\n",
"21227839 수진\n",
"21227840 모란\n",
"21227841 모란\n",
"21227842 모란\n",
"21227843 모란\n",
"21227844 모란\n",
"21227845 모란\n",
"21227846 모란\n",
"21227847 모란\n",
"21227848 모란\n",
"21227849 모란\n",
"21227850 모란\n",
"21227851 모란\n",
"21227852 모란\n",
"21227853 모란\n",
"21227854 모란\n",
"21227855 모란\n",
"21227856 모란\n",
"21227857 모란\n",
"21227858 모란\n",
"21227859 모란\n",
"Name: name, Length: 21227860, dtype: object"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['name']"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:37.405907Z",
"start_time": "2019-04-10T00:58:37.395427Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0 서울역\n",
"1 서울역\n",
"2 서울역\n",
"3 서울역\n",
"4 서울역\n",
"5 서울역\n",
"6 서울역\n",
"7 서울역\n",
"8 서울역\n",
"9 서울역\n",
"10 서울역\n",
"11 서울역\n",
"12 서울역\n",
"13 서울역\n",
"14 서울역\n",
"15 서울역\n",
"16 서울역\n",
"17 서울역\n",
"18 서울역\n",
"19 서울역\n",
"20 시청\n",
"21 시청\n",
"22 시청\n",
"23 시청\n",
"24 시청\n",
"25 시청\n",
"26 시청\n",
"27 시청\n",
"28 시청\n",
"29 시청\n",
" ... \n",
"21227830 수진\n",
"21227831 수진\n",
"21227832 수진\n",
"21227833 수진\n",
"21227834 수진\n",
"21227835 수진\n",
"21227836 수진\n",
"21227837 수진\n",
"21227838 수진\n",
"21227839 수진\n",
"21227840 모란\n",
"21227841 모란\n",
"21227842 모란\n",
"21227843 모란\n",
"21227844 모란\n",
"21227845 모란\n",
"21227846 모란\n",
"21227847 모란\n",
"21227848 모란\n",
"21227849 모란\n",
"21227850 모란\n",
"21227851 모란\n",
"21227852 모란\n",
"21227853 모란\n",
"21227854 모란\n",
"21227855 모란\n",
"21227856 모란\n",
"21227857 모란\n",
"21227858 모란\n",
"21227859 모란\n",
"Name: name, Length: 21227860, dtype: object"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = df['name']\n",
"s"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:39.187596Z",
"start_time": "2019-04-10T00:58:37.407405Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"['석촌',\n",
" '청구',\n",
" '안암',\n",
" '서대문',\n",
" '명일',\n",
" '산성',\n",
" '석계',\n",
" '서울역',\n",
" '신대방',\n",
" '방이',\n",
" '삼산체육관',\n",
" '마들',\n",
" '잠실새내',\n",
" '아현',\n",
" '굴포천',\n",
" '장지',\n",
" '월곡',\n",
" '가산디지털단지',\n",
" '무악재',\n",
" '청담',\n",
" '여의나루',\n",
" '문정',\n",
" '오금',\n",
" '강남구청',\n",
" '모란',\n",
" '발산',\n",
" '동묘앞',\n",
" '영등포구청',\n",
" '굽은다리',\n",
" '상봉',\n",
" '이대',\n",
" '삼성',\n",
" '뚝섬유원지',\n",
" '광화문',\n",
" '용답',\n",
" '신중동',\n",
" '약수',\n",
" '한성대입구',\n",
" '몽촌토성',\n",
" '독립문',\n",
" '광명사거리',\n",
" '화곡',\n",
" '방화',\n",
" '보문',\n",
" '수진',\n",
" '마포',\n",
" '고려대',\n",
" '논현',\n",
" '종로3가',\n",
" '상일동',\n",
" '면목',\n",
" '서울대입구',\n",
" '용두',\n",
" '효창공원앞',\n",
" '도봉산',\n",
" '신대방삼거리',\n",
" '거여',\n",
" '동작',\n",
" '우장산',\n",
" '신금호',\n",
" '성수',\n",
" '남태령',\n",
" '숭실대입구',\n",
" '남부터미널',\n",
" '동대문',\n",
" '개화산',\n",
" '반포',\n",
" '미아사거리',\n",
" '장한평',\n",
" '내방',\n",
" '수서',\n",
" '애오개',\n",
" '신촌',\n",
" '가락시장',\n",
" '녹번',\n",
" '미아',\n",
" '아차산',\n",
" '용마산',\n",
" '응암',\n",
" '중계',\n",
" '복정',\n",
" '마장',\n",
" '충정로',\n",
" '구로디지털단지',\n",
" '둔촌동',\n",
" '남성',\n",
" '송파',\n",
" '부평구청',\n",
" '어린이대공원',\n",
" '송정',\n",
" '장승배기',\n",
" '강남',\n",
" '광흥창',\n",
" '동대입구',\n",
" '월드컵경기장',\n",
" '까치산',\n",
" '한양대',\n",
" '오목교',\n",
" '군자',\n",
" '올림픽공원',\n",
" '태릉입구',\n",
" '상동',\n",
" '도곡',\n",
" '철산',\n",
" '마천',\n",
" '매봉',\n",
" '홍제',\n",
" '시청',\n",
" '신풍',\n",
" '동대문역사문화공원',\n",
" '이태원',\n",
" '한강진',\n",
" '잠실',\n",
" '일원',\n",
" '홍대입구',\n",
" '공덕',\n",
" '디지털미디어시티',\n",
" '수락산',\n",
" '마포구청',\n",
" '상도',\n",
" '강변',\n",
" '교대',\n",
" '종로5가',\n",
" '수유',\n",
" '부천시청',\n",
" '하계',\n",
" '서초',\n",
" '당산',\n",
" '구산',\n",
" '이촌',\n",
" '신설동',\n",
" '양평',\n",
" '장암',\n",
" '대청',\n",
" '대흥',\n",
" '종각',\n",
" '양재',\n",
" '버티고개',\n",
" '합정',\n",
" '신용산',\n",
" '압구정',\n",
" '신림',\n",
" '선릉',\n",
" '화랑대',\n",
" '노원',\n",
" '창신',\n",
" '암사',\n",
" '쌍문',\n",
" '단대오거리',\n",
" '왕십리',\n",
" '방배',\n",
" '안국',\n",
" '독바위',\n",
" '길동',\n",
" '문래',\n",
" '신답',\n",
" '고속터미널',\n",
" '건대입구',\n",
" '춘의',\n",
" '봉천',\n",
" '영등포시장',\n",
" '답십리',\n",
" '강동구청',\n",
" '성신여대입구',\n",
" '여의도',\n",
" '혜화',\n",
" '상계',\n",
" '김포공항',\n",
" '길음',\n",
" '중곡',\n",
" '까치울',\n",
" '봉화산',\n",
" '신정네거리',\n",
" '신도림',\n",
" '신정',\n",
" '보라매',\n",
" '남구로',\n",
" '불광',\n",
" '낙성대',\n",
" '충무로',\n",
" '대림',\n",
" '개롱',\n",
" '상수',\n",
" '신사',\n",
" '옥수',\n",
" '명동',\n",
" '먹골',\n",
" '구파발',\n",
" '청량리',\n",
" '돌곶이',\n",
" '대치',\n",
" '신길',\n",
" '지축',\n",
" '총신대입구(이수)',\n",
" '고덕',\n",
" '도림천',\n",
" '을지로입구',\n",
" '삼각지',\n",
" '천호',\n",
" '사당',\n",
" '온수',\n",
" '연신내',\n",
" '공릉',\n",
" '양천구청',\n",
" '녹사평',\n",
" '상월곡',\n",
" '을지로3가',\n",
" '강동',\n",
" '학여울',\n",
" '을지로4가',\n",
" '창동',\n",
" '상왕십리',\n",
" '망원',\n",
" '새절',\n",
" '제기동',\n",
" '경복궁',\n",
" '사가정',\n",
" '신흥',\n",
" '중화',\n",
" '남한산성입구',\n",
" '부천종합운동장',\n",
" '증산',\n",
" '경찰병원',\n",
" '잠실나루',\n",
" '뚝섬',\n",
" '당고개',\n",
" '광나루',\n",
" '천왕',\n",
" '금호',\n",
" '구의',\n",
" '역촌',\n",
" '마곡',\n",
" '종합운동장',\n",
" '잠원',\n",
" '회현',\n",
" '학동',\n",
" '역삼',\n",
" '숙대입구',\n",
" '행당',\n",
" '신당',\n",
" '목동']"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = list(set(s))\n",
"s"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:39.201571Z",
"start_time": "2019-04-10T00:58:39.189093Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"241"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(s)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:39.218538Z",
"start_time": "2019-04-10T00:58:39.203067Z"
}
},
"outputs": [],
"source": [
"def create_dataset(signal_data, look_back=1):\n",
" dataX, dataY = [], []\n",
" for i in range(len(signal_data) - look_back):\n",
" dataX.append(signal_data[i:(i + look_back), 0])\n",
" dataY.append(signal_data[i + look_back, 0])\n",
" return np.array(dataX), np.array(dataY)\n",
"\n",
"look_back = 20"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:39.234511Z",
"start_time": "2019-04-10T00:58:39.220535Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"'청구'"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s[1]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:39.244989Z",
"start_time": "2019-04-10T00:58:39.236505Z"
}
},
"outputs": [],
"source": [
"# for i in range(len(s)):\n",
"# print(s[i] ,':', len(df[df['name']==s[i]]))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:39.263954Z",
"start_time": "2019-04-10T00:58:39.251477Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"1006120"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"20226480 - 19220360 # 71220 * 284 - rows"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>number</th>\n",
" <th>name</th>\n",
" <th>div</th>\n",
" <th>a</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>620</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>945.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>621</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>314.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>622</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-64.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>623</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-205.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>624</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-806.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>625</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-405.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>626</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-336.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>627</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-474.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>628</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-628.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>629</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-584.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>630</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-661.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>631</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-751.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>632</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-839.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>633</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-723.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>634</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-198.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>635</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>800.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>636</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>1650.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>637</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>1725.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>638</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>507.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>639</th>\n",
" <td>2008-01-01</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-58.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5860</th>\n",
" <td>2008-01-02</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-126.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5861</th>\n",
" <td>2008-01-02</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-2936.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5862</th>\n",
" <td>2008-01-02</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-6503.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5863</th>\n",
" <td>2008-01-02</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-16890.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5864</th>\n",
" <td>2008-01-02</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-10895.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5865</th>\n",
" <td>2008-01-02</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-3198.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5866</th>\n",
" <td>2008-01-02</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-1487.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5867</th>\n",
" <td>2008-01-02</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>79.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5868</th>\n",
" <td>2008-01-02</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-858.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5869</th>\n",
" <td>2008-01-02</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>364.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21217490</th>\n",
" <td>2018-12-30</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-347.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21217491</th>\n",
" <td>2018-12-30</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-780.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21217492</th>\n",
" <td>2018-12-30</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-859.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21217493</th>\n",
" <td>2018-12-30</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-608.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21217494</th>\n",
" <td>2018-12-30</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>189.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21217495</th>\n",
" <td>2018-12-30</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>1481.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21217496</th>\n",
" <td>2018-12-30</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>3059.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21217497</th>\n",
" <td>2018-12-30</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>4120.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21217498</th>\n",
" <td>2018-12-30</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>1836.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21217499</th>\n",
" <td>2018-12-30</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-188.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222980</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>27.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222981</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-916.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222982</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-3810.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222983</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-8948.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222984</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-7713.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222985</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-3585.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222986</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-1945.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222987</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-1267.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222988</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-1524.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222989</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-50.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222990</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>1138.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222991</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>2111.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222992</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>3164.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222993</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>4544.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222994</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>2526.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222995</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>2859.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222996</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>3620.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222997</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>3692.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222998</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>1239.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21222999</th>\n",
" <td>2018-12-31</td>\n",
" <td>222.0</td>\n",
" <td>강남</td>\n",
" <td>승차</td>\n",
" <td>-1845.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>78520 rows × 5 columns</p>\n",
"</div>"
],
"text/plain": [
" date number name div a\n",
"620 2008-01-01 222.0 강남 승차 945.0\n",
"621 2008-01-01 222.0 강남 승차 314.0\n",
"622 2008-01-01 222.0 강남 승차 -64.0\n",
"623 2008-01-01 222.0 강남 승차 -205.0\n",
"624 2008-01-01 222.0 강남 승차 -806.0\n",
"625 2008-01-01 222.0 강남 승차 -405.0\n",
"626 2008-01-01 222.0 강남 승차 -336.0\n",
"627 2008-01-01 222.0 강남 승차 -474.0\n",
"628 2008-01-01 222.0 강남 승차 -628.0\n",
"629 2008-01-01 222.0 강남 승차 -584.0\n",
"630 2008-01-01 222.0 강남 승차 -661.0\n",
"631 2008-01-01 222.0 강남 승차 -751.0\n",
"632 2008-01-01 222.0 강남 승차 -839.0\n",
"633 2008-01-01 222.0 강남 승차 -723.0\n",
"634 2008-01-01 222.0 강남 승차 -198.0\n",
"635 2008-01-01 222.0 강남 승차 800.0\n",
"636 2008-01-01 222.0 강남 승차 1650.0\n",
"637 2008-01-01 222.0 강남 승차 1725.0\n",
"638 2008-01-01 222.0 강남 승차 507.0\n",
"639 2008-01-01 222.0 강남 승차 -58.0\n",
"5860 2008-01-02 222.0 강남 승차 -126.0\n",
"5861 2008-01-02 222.0 강남 승차 -2936.0\n",
"5862 2008-01-02 222.0 강남 승차 -6503.0\n",
"5863 2008-01-02 222.0 강남 승차 -16890.0\n",
"5864 2008-01-02 222.0 강남 승차 -10895.0\n",
"5865 2008-01-02 222.0 강남 승차 -3198.0\n",
"5866 2008-01-02 222.0 강남 승차 -1487.0\n",
"5867 2008-01-02 222.0 강남 승차 79.0\n",
"5868 2008-01-02 222.0 강남 승차 -858.0\n",
"5869 2008-01-02 222.0 강남 승차 364.0\n",
"... ... ... ... .. ...\n",
"21217490 2018-12-30 222.0 강남 승차 -347.0\n",
"21217491 2018-12-30 222.0 강남 승차 -780.0\n",
"21217492 2018-12-30 222.0 강남 승차 -859.0\n",
"21217493 2018-12-30 222.0 강남 승차 -608.0\n",
"21217494 2018-12-30 222.0 강남 승차 189.0\n",
"21217495 2018-12-30 222.0 강남 승차 1481.0\n",
"21217496 2018-12-30 222.0 강남 승차 3059.0\n",
"21217497 2018-12-30 222.0 강남 승차 4120.0\n",
"21217498 2018-12-30 222.0 강남 승차 1836.0\n",
"21217499 2018-12-30 222.0 강남 승차 -188.0\n",
"21222980 2018-12-31 222.0 강남 승차 27.0\n",
"21222981 2018-12-31 222.0 강남 승차 -916.0\n",
"21222982 2018-12-31 222.0 강남 승차 -3810.0\n",
"21222983 2018-12-31 222.0 강남 승차 -8948.0\n",
"21222984 2018-12-31 222.0 강남 승차 -7713.0\n",
"21222985 2018-12-31 222.0 강남 승차 -3585.0\n",
"21222986 2018-12-31 222.0 강남 승차 -1945.0\n",
"21222987 2018-12-31 222.0 강남 승차 -1267.0\n",
"21222988 2018-12-31 222.0 강남 승차 -1524.0\n",
"21222989 2018-12-31 222.0 강남 승차 -50.0\n",
"21222990 2018-12-31 222.0 강남 승차 1138.0\n",
"21222991 2018-12-31 222.0 강남 승차 2111.0\n",
"21222992 2018-12-31 222.0 강남 승차 3164.0\n",
"21222993 2018-12-31 222.0 강남 승차 4544.0\n",
"21222994 2018-12-31 222.0 강남 승차 2526.0\n",
"21222995 2018-12-31 222.0 강남 승차 2859.0\n",
"21222996 2018-12-31 222.0 강남 승차 3620.0\n",
"21222997 2018-12-31 222.0 강남 승차 3692.0\n",
"21222998 2018-12-31 222.0 강남 승차 1239.0\n",
"21222999 2018-12-31 222.0 강남 승차 -1845.0\n",
"\n",
"[78520 rows x 5 columns]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data1 = df[df['name']=='강남']\n",
"data1"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:40.281063Z",
"start_time": "2019-04-10T00:58:40.272579Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"620 강남\n",
"Name: name, dtype: object"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"name = data1.iloc[:1,2,]\n",
"name"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:40.325981Z",
"start_time": "2019-04-10T00:58:40.285555Z"
}
},
"outputs": [],
"source": [
"name = name.to_string(index=False)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"' 강남'"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"name"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 432x288 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.savefig(name)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:40.337957Z",
"start_time": "2019-04-10T00:58:40.328476Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"78520"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(data1)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T00:58:40.355924Z",
"start_time": "2019-04-10T00:58:40.339455Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"(78520, 5)"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data1.shape"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T05:13:21.487828Z",
"start_time": "2019-04-10T04:45:15.018295Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" date number name div a\n",
"620 2008-01-01 222.0 강남 승차 945.0\n",
"621 2008-01-01 222.0 강남 승차 314.0\n",
"622 2008-01-01 222.0 강남 승차 -64.0\n",
"623 2008-01-01 222.0 강남 승차 -205.0\n",
"624 2008-01-01 222.0 강남 승차 -806.0\n",
"625 2008-01-01 222.0 강남 승차 -405.0\n",
"626 2008-01-01 222.0 강남 승차 -336.0\n",
"627 2008-01-01 222.0 강남 승차 -474.0\n",
"628 2008-01-01 222.0 강남 승차 -628.0\n",
"629 2008-01-01 222.0 강남 승차 -584.0\n",
"630 2008-01-01 222.0 강남 승차 -661.0\n",
"631 2008-01-01 222.0 강남 승차 -751.0\n",
"632 2008-01-01 222.0 강남 승차 -839.0\n",
"633 2008-01-01 222.0 강남 승차 -723.0\n",
"634 2008-01-01 222.0 강남 승차 -198.0\n",
"635 2008-01-01 222.0 강남 승차 800.0\n",
"636 2008-01-01 222.0 강남 승차 1650.0\n",
"637 2008-01-01 222.0 강남 승차 1725.0\n",
"638 2008-01-01 222.0 강남 승차 507.0\n",
"639 2008-01-01 222.0 강남 승차 -58.0\n",
"5860 2008-01-02 222.0 강남 승차 -126.0\n",
"5861 2008-01-02 222.0 강남 승차 -2936.0\n",
"5862 2008-01-02 222.0 강남 승차 -6503.0\n",
"5863 2008-01-02 222.0 강남 승차 -16890.0\n",
"5864 2008-01-02 222.0 강남 승차 -10895.0\n",
"5865 2008-01-02 222.0 강남 승차 -3198.0\n",
"5866 2008-01-02 222.0 강남 승차 -1487.0\n",
"5867 2008-01-02 222.0 강남 승차 79.0\n",
"5868 2008-01-02 222.0 강남 승차 -858.0\n",
"5869 2008-01-02 222.0 강남 승차 364.0\n",
"... ... ... ... .. ...\n",
"21217490 2018-12-30 222.0 강남 승차 -347.0\n",
"21217491 2018-12-30 222.0 강남 승차 -780.0\n",
"21217492 2018-12-30 222.0 강남 승차 -859.0\n",
"21217493 2018-12-30 222.0 강남 승차 -608.0\n",
"21217494 2018-12-30 222.0 강남 승차 189.0\n",
"21217495 2018-12-30 222.0 강남 승차 1481.0\n",
"21217496 2018-12-30 222.0 강남 승차 3059.0\n",
"21217497 2018-12-30 222.0 강남 승차 4120.0\n",
"21217498 2018-12-30 222.0 강남 승차 1836.0\n",
"21217499 2018-12-30 222.0 강남 승차 -188.0\n",
"21222980 2018-12-31 222.0 강남 승차 27.0\n",
"21222981 2018-12-31 222.0 강남 승차 -916.0\n",
"21222982 2018-12-31 222.0 강남 승차 -3810.0\n",
"21222983 2018-12-31 222.0 강남 승차 -8948.0\n",
"21222984 2018-12-31 222.0 강남 승차 -7713.0\n",
"21222985 2018-12-31 222.0 강남 승차 -3585.0\n",
"21222986 2018-12-31 222.0 강남 승차 -1945.0\n",
"21222987 2018-12-31 222.0 강남 승차 -1267.0\n",
"21222988 2018-12-31 222.0 강남 승차 -1524.0\n",
"21222989 2018-12-31 222.0 강남 승차 -50.0\n",
"21222990 2018-12-31 222.0 강남 승차 1138.0\n",
"21222991 2018-12-31 222.0 강남 승차 2111.0\n",
"21222992 2018-12-31 222.0 강남 승차 3164.0\n",
"21222993 2018-12-31 222.0 강남 승차 4544.0\n",
"21222994 2018-12-31 222.0 강남 승차 2526.0\n",
"21222995 2018-12-31 222.0 강남 승차 2859.0\n",
"21222996 2018-12-31 222.0 강남 승차 3620.0\n",
"21222997 2018-12-31 222.0 강남 승차 3692.0\n",
"21222998 2018-12-31 222.0 강남 승차 1239.0\n",
"21222999 2018-12-31 222.0 강남 승차 -1845.0\n",
"\n",
"[78520 rows x 5 columns]\n"
]
}
],
"source": [
"data1 = df[df['name']=='강남']\n",
"print(data1)\n",
"data = data1['a']\n",
"# data = data.value\n",
"data = data.values.astype('float32')\n",
"data = data.reshape(len(data), 1)\n",
"\n",
"scaler = MinMaxScaler(feature_range=(0, 1))\n",
"data = scaler.fit_transform(data)\n",
"\n",
"train_size = int(len(data) * 0.80)\n",
"test_size = len(data) - train_size\n",
"\n",
"train = data[0:train_size]\n",
"test = data[train_size:len(data)]\n",
"x_train, y_train = create_dataset(train, look_back)\n",
"x_test, y_test = create_dataset(test, look_back)\n",
"\n",
"x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))\n",
"x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))\n",
"y_train=np.repeat(y_train.reshape(-1,1), 20, axis=1).reshape(-1,20,1)\n",
"y_test=np.repeat(y_test.reshape(-1,1), 20, axis=1).reshape(-1,20,1)\n",
"# 모델 구성하기"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T05:13:21.487828Z",
"start_time": "2019-04-10T04:45:15.018295Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From D:\\Anaconda3\\envs\\me\\lib\\site-packages\\tensorflow\\python\\framework\\op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Colocations handled automatically by placer.\n",
"WARNING:tensorflow:From D:\\Anaconda3\\envs\\me\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py:3445: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.\n",
"WARNING:tensorflow:From D:\\Anaconda3\\envs\\me\\lib\\site-packages\\tensorflow\\python\\ops\\math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use tf.cast instead.\n",
"Epoch 1/10\n",
"62796/62796 [==============================] - 105s 2ms/step - loss: 0.0136 - acc: 3.1849e-05\n",
"Epoch 2/10\n",
"62796/62796 [==============================] - 103s 2ms/step - loss: 0.0054 - acc: 3.1849e-05\n",
"Epoch 3/10\n",
"62796/62796 [==============================] - 110s 2ms/step - loss: 0.0042 - acc: 3.1849e-05\n",
"Epoch 4/10\n",
"62796/62796 [==============================] - 122s 2ms/step - loss: 0.0034 - acc: 3.1849e-05\n",
"Epoch 5/10\n",
"62796/62796 [==============================] - 119s 2ms/step - loss: 0.0030 - acc: 3.1849e-05\n",
"Epoch 6/10\n",
"62796/62796 [==============================] - 117s 2ms/step - loss: 0.0027 - acc: 3.1849e-05\n",
"Epoch 7/10\n",
"62796/62796 [==============================] - 122s 2ms/step - loss: 0.0026 - acc: 3.1849e-05\n",
"Epoch 8/10\n",
"62796/62796 [==============================] - 122s 2ms/step - loss: 0.0024 - acc: 3.1849e-05\n",
"Epoch 9/10\n",
"62796/62796 [==============================] - 128s 2ms/step - loss: 0.0023 - acc: 3.1849e-05\n",
"Epoch 10/10\n",
"62796/62796 [==============================] - 128s 2ms/step - loss: 0.0022 - acc: 3.1849e-05\n"
]
},
{
"data": {
"text/plain": [
"<keras.callbacks.History at 0x13301c771d0>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = Sequential()\n",
"\n",
"model.add(LSTM(512, return_sequences=True))\n",
"model.add(Dropout(0.3))\n",
"\n",
"model.add(LSTM(512, return_sequences=True))\n",
"model.add(Dropout(0.3))\n",
"\n",
"model.add(LSTM(1, return_sequences=True))\n",
"\n",
"\n",
"# 수동학습\n",
"model.compile(loss='mean_squared_error', optimizer='rmsprop', metrics=['accuracy'])\n",
"# model.summary()\n",
"model.fit(x_train, y_train, epochs=10, batch_size=64)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"model.save('xx.h5')"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T05:13:21.487828Z",
"start_time": "2019-04-10T04:45:15.018295Z"
}
},
"outputs": [],
"source": [
"# model = Sequential()\n",
"# model.add(LSTM(512, batch_input_shape=(1, look_back, 1), stateful=True))\n",
"# model.add(Dropout(0.3))\n",
"# model.add(Dense(1))\n",
"# model.compile(loss='mean_squared_error', optimizer='adam')\n",
"\n",
"\n",
"# for i in range(200):\n",
"# model.fit(x_train, y_train, epochs=1, batch_size=1, shuffle=False)\n",
"# model.reset_states()\n",
"\n",
"\n",
"# # model.add(LSTM(512, input_shape=(None, 1)))\n",
"# # model.add(Dropout(0.3))\n",
"# # model.add(LSTM(i, input_shape=(None, 1)))\n",
"\n",
"# # model.add(Dense(i))\n",
"# # model.add(Dropout(0.3))\n",
"# # model.add(Dropout(0.3))\n",
"# # model.add(Dense(64))\n",
"\n",
"\n",
"# # name = \"tt.jpg\"\n",
"# # 수동학습\n",
"# # model.compile(loss='mean_squared_error', optimizer='rmsprop', metrics=['accuracy'])\n",
"# # hist = model.fit(x_train, y_train, epochs=10, batch_size=64)\n",
"\n",
"# # 저장된거불러오기\n",
"# from keras.models import load_model\n",
"# # model = load_model('trythis.h5')\n",
"# # model.fit(x_train, y_train, epochs=10, batch_size=64)\n",
"# model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T05:13:21.487828Z",
"start_time": "2019-04-10T04:45:15.018295Z"
}
},
"outputs": [
{
"ename": "ValueError",
"evalue": "x and y can be no greater than 2-D, but have shapes (15684,) and (15684, 20, 1)",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-24-d6f62c814935>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx_test\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_test\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mp\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlegend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'testY'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'p'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mloc\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'upper right'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\Anaconda3\\envs\\me\\lib\\site-packages\\matplotlib\\pyplot.py\u001b[0m in \u001b[0;36mplot\u001b[1;34m(scalex, scaley, data, *args, **kwargs)\u001b[0m\n\u001b[0;32m 2809\u001b[0m return gca().plot(\n\u001b[0;32m 2810\u001b[0m *args, scalex=scalex, scaley=scaley, **({\"data\": data} if data\n\u001b[1;32m-> 2811\u001b[1;33m is not None else {}), **kwargs)\n\u001b[0m\u001b[0;32m 2812\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2813\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\Anaconda3\\envs\\me\\lib\\site-packages\\matplotlib\\__init__.py\u001b[0m in \u001b[0;36minner\u001b[1;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1808\u001b[0m \u001b[1;34m\"the Matplotlib list!)\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mlabel_namer\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__name__\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1809\u001b[0m RuntimeWarning, stacklevel=2)\n\u001b[1;32m-> 1810\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1811\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1812\u001b[0m inner.__doc__ = _add_data_doc(inner.__doc__,\n",
"\u001b[1;32mD:\\Anaconda3\\envs\\me\\lib\\site-packages\\matplotlib\\axes\\_axes.py\u001b[0m in \u001b[0;36mplot\u001b[1;34m(self, scalex, scaley, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1609\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcbook\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnormalize_kwargs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmlines\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mLine2D\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_alias_map\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1610\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1611\u001b[1;33m \u001b[1;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_lines\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1612\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madd_line\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mline\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1613\u001b[0m \u001b[0mlines\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mline\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\Anaconda3\\envs\\me\\lib\\site-packages\\matplotlib\\axes\\_base.py\u001b[0m in \u001b[0;36m_grab_next_args\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 391\u001b[0m \u001b[0mthis\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 392\u001b[0m \u001b[0margs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 393\u001b[1;33m \u001b[1;32myield\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_plot_args\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mthis\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 394\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 395\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\Anaconda3\\envs\\me\\lib\\site-packages\\matplotlib\\axes\\_base.py\u001b[0m in \u001b[0;36m_plot_args\u001b[1;34m(self, tup, kwargs)\u001b[0m\n\u001b[0;32m 368\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mindex_of\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtup\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 369\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 370\u001b[1;33m \u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_xy_from_xy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 371\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 372\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcommand\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'plot'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mD:\\Anaconda3\\envs\\me\\lib\\site-packages\\matplotlib\\axes\\_base.py\u001b[0m in \u001b[0;36m_xy_from_xy\u001b[1;34m(self, x, y)\u001b[0m\n\u001b[0;32m 232\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m2\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 233\u001b[0m raise ValueError(\"x and y can be no greater than 2-D, but have \"\n\u001b[1;32m--> 234\u001b[1;33m \"shapes {} and {}\".format(x.shape, y.shape))\n\u001b[0m\u001b[0;32m 235\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 236\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mValueError\u001b[0m: x and y can be no greater than 2-D, but have shapes (15684,) and (15684, 20, 1)"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"p = model.predict(x_test)\n",
"\n",
"plt.plot(y_test)\n",
"plt.plot(p)\n",
"plt.legend(['testY', 'p'], loc='upper right')\n",
"plt.title(mean_squared_error(y_test, p))\n",
"plt.show()\n",
"# plt.savefig(datetime.datetime.now())\n",
"# plt.savefig(name)\n",
"# plt.clf()\n",
"print(mean_squared_error(y_test, p))"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"predictions = model.predict(x_train)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(62796, 20, 1)"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predictions.shape"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"b = predictions\n",
"b = b.reshape(-1, 1)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x13303787898>]"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(b)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"future = []\n",
"currentStep = predictions[-20:, :, :]\n",
"\n",
"for i in range(10):\n",
" currentStep = model.predict(currentStep)\n",
" future.append(currentStep)\n",
"\n",
"# model.reset_states()"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'list' object has no attribute 'shape'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-37-358be7a4f9b6>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mfuture\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mAttributeError\u001b[0m: 'list' object has no attribute 'shape'"
]
}
],
"source": [
"future.shape"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(10, 20, 20, 1)"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = np.asarray(future)\n",
"c.shape"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(4000, 1)"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = c.reshape(-1, 1)\n",
"c.shape"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x1330b73f940>]"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(c[1000:2000])"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x1330b719780>]"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(c)"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x133140ccf60>]"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"d = p\n",
"d=d.reshape(-1,1)\n",
"plt.plot(d[:4000])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# x_train[-1] = x_train[-1].reshape(-1, 1)\n",
"# x_train[-1].shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# x_train[-1] = x_train[-1][:,-1:,np.newaxis]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"np.set_printoptions(suppress=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"b"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"future =[]\n",
"future.append(b)\n",
"\n",
"for i in range(10):\n",
" predict = model.predict(future[-1])\n",
" predict = predict[:, :, np.newaxis]\n",
" future.append(predict)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"future.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"c = np.asarray(future)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"c = c.reshape(-1,1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.plot(c[:100])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# predictions = predictions.shape(62796,1,1)\n",
"# b = a[:, :, newaxis]\n",
"predictions = predictions[:, :, np.newaxis]\n",
"predictions.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"future = []\n",
"currentStep = predictions[:, -1:, :]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"currentStep = currentStep[16:]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"currentStep.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# currentStep = currentStep.reshape(3139, look_back, 1)\n",
"# x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))\n",
"# currentStep = np.reshape(currentStep, (-1, ))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"currentStep.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"future=[]\n",
"\n",
"for i in range(100):\n",
" print(i)\n",
" currentStep = model.predict(currentStep)\n",
" currentStep = currentStep[:, :, np.newaxis]\n",
" print(currentStep.shape)\n",
" future.append(currentStep)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"future"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"a = np.asarray(future)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"a.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"a.reshape(1, -1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"predictions = np.zeros((look_ahead, 1))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"for i in range(look_ahead):\n",
" prediction = model.predict(np.array([xhat]), batch_size=1)\n",
" predictions[i] = prediction\n",
" xhat = np.vstack([xhat[1:], prediction])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"xhat"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.plot(predictions)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"predictions"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"p[-10:]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"y_test[-10:]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"x_test[-10:]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"x_train.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# x_train = np.reshape(x_train, (len(x_train), 1, 1))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"predictions = model.predict(x_train)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"predictions.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"future = []\n",
"currentStep = predictions[:, -1: :]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"for i in range(50):\n",
" currentStep = model.predict(currentStep)\n",
" future.append(currentStep)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T05:28:22.326018Z",
"start_time": "2019-04-10T05:28:22.188275Z"
},
"scrolled": true
},
"outputs": [],
"source": [
"# # Plot training & validation loss values\n",
"# plt.plot(hist.history['loss'])\n",
"# plt.title('Model loss')\n",
"# plt.ylabel('Loss')\n",
"# plt.xlabel('Epoch')\n",
"# plt.legend(['Train', 'Test'], loc='upper left')\n",
"# plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T05:49:44.975765Z",
"start_time": "2019-04-10T05:49:44.502682Z"
}
},
"outputs": [],
"source": [
"plt.plot(y_test)\n",
"plt.plot(p)\n",
"plt.legend(['testY', 'prediction'], loc='best')\n",
"plt.title('LSTM(512)+LSTM(1024)')\n",
"plt.ylabel('embarked personnel')\n",
"plt.xlabel('Time')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T05:43:47.043498Z",
"start_time": "2019-04-10T05:43:28.249850Z"
}
},
"outputs": [],
"source": [
"trainPredict = model.predict(x_train)\n",
"testPredict = model.predict(x_test)\n",
"# invert predictions\n",
"trainPredict = scaler.inverse_transform(trainPredict)\n",
"trainY = scaler.inverse_transform([y_train])\n",
"testPredict = scaler.inverse_transform(testPredict)\n",
"testY = scaler.inverse_transform([y_test])\n",
"\n",
"# shift train predictions for plotting\n",
"trainPredictPlot = np.empty_like(data)\n",
"trainPredictPlot[:, :] = np.nan\n",
"trainPredictPlot[look_back:len(trainPredict)+look_back, :] = trainPredict\n",
"# shift test predictions for plotting\n",
"testPredictPlot = np.empty_like(data)\n",
"testPredictPlot[:, :] = np.nan\n",
"testPredictPlot[len(trainPredict)+(look_back*2):len(data)+2, :] = testPredict\n",
"# plot baseline and predictions\n",
"plt.plot(scaler.inverse_transform(data))\n",
"plt.plot(trainPredictPlot)\n",
"plt.plot(testPredictPlot)\n",
"plt.legend(['data', 'train','predict'], loc='best')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(y_train.shape)\n",
"print(y_test.shape)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"yhat = y_test\n",
"yhat = yhat.reshape(len(yhat), 1, 1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"y = model.predict(yhat)\n",
"y"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"data = y\n",
"\n",
"data = data.reshape(len(data), 1)\n",
"\n",
"scaler = MinMaxScaler(feature_range=(0, 1))\n",
"data = scaler.fit_transform(data)\n",
"\n",
"train_size = int(len(data) * 0.80)\n",
"test_size = len(data) - train_size\n",
"\n",
"train = data[0:train_size]\n",
"test = data[train_size:len(data)]\n",
"x_train, y_train = create_dataset(train, look_back)\n",
"x_test, y_test = create_dataset(test, look_back)\n",
"\n",
"from xgboost import XGBRegressor\n",
"XGBModel = XGBRegressor()\n",
"XGBModel.fit(x_train,y_train, verbose=False)\n",
"\n",
"p = XGBModel.predict(x_test)\n",
"plt.plot(y_test)\n",
"plt.plot(p)\n",
"plt.legend(['testY', 'p'], loc='upper right')\n",
"plt.title(mean_squared_error(y_test, p))\n",
"\n",
"plt.show()\n",
"print(mean_squared_error(y_test, p))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.plot(y_test)\n",
"plt.xlim(0, 100)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.plot(p)\n",
"plt.xlim(0, 100)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(y_test[:100])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(p[:100])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.scatter(len(y_test), y_test)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"data = y\n",
"# data = data.value\n",
"data = data.values.astype('float32')\n",
"data = data.reshape(len(data), 1)\n",
"\n",
"scaler = MinMaxScaler(feature_range=(0, 1))\n",
"data = scaler.fit_transform(data)\n",
"\n",
"train_size = int(len(data) * 0.80)\n",
"test_size = len(data) - train_size\n",
"\n",
"train = data[0:train_size]\n",
"test = data[train_size:len(data)]\n",
"# x_train, y_train = create_dataset(train, look_back)\n",
"# x_test, y_test = create_dataset(test, look_back)\n",
"\n",
"# x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))\n",
"# x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# x = range(0,len(y))\n",
"x = np.arange(0, len(y))\n",
"x=x.reshape(len(x),1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(len(x))\n",
"print(len(y))\n",
"print(x.shape)\n",
"print(y.shape)\n",
"print(type(y))\n",
"print(type(x))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"x=x.reshape(len(x),1)\n",
"x.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"data = y\n",
"\n",
"from sklearn.model_selection import train_test_split\n",
"x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)\n",
"\n",
"XGBModel = XGBRegressor()\n",
"XGBModel.fit(x_train,y_train, verbose=False)\n",
"\n",
"p = XGBModel.predict(x_test)\n",
"plt.plot(y_test)\n",
"plt.plot(p)\n",
"plt.legend(['testY', 'p'], loc='upper right')\n",
"plt.title(mean_squared_error(y_test, p))\n",
"\n",
"plt.show()\n",
"print(mean_squared_error(y_test, p))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.plot(x_train)\n",
"plt.plot(y_train)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.plot(x_train)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.plot(y_train)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.plot(p)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from xgboost import XGBRegressor\n",
"# import xgboost as xgb\n",
"# from xgboost.sklearn import XGBRegressor\n",
"XGBModel = XGBRegressor()\n",
"XGBModel.fit(x,y, verbose=False)\n",
"\n",
"# Get the mean absolute error on the validation data :\n",
"# XGBpredictions = XGBModel.predict(val_X)\n",
"# MAE = mean_absolute_error(val_y , XGBpredictions)\n",
"# print('XGBoost validation MAE = ',MAE)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from xgboost import plot_tree\n",
"plot_tree(XGBModel)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.ensemble import RandomForestRegressor\n",
"model = RandomForestRegressor()\n",
"model.fit(x,y)\n",
"\n",
"# Get the mean absolute error on the validation data\n",
"predicted_prices = model.predict(val_X)\n",
"MAE = mean_absolute_error(val_y , predicted_prices)\n",
"print('Random forest validation MAE = ', MAE)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# 저장\n",
"model_json = model.to_json()\n",
"with open(\"s[0].json\", \"w\") as json_file :\n",
" json_file.write(model_json)\n",
"model.save_weights(\"s[0].h5\")\n",
"print(\"Saved model to disk\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T01:28:32.388650Z",
"start_time": "2019-04-10T01:28:32.380171Z"
}
},
"outputs": [],
"source": [
"# # 모델 불러오기\n",
"# from keras.models import model_from_json\n",
"# json_file = open(\"model1.json\", \"r\")\n",
"# model_json = json_file.read()\n",
"# json_file.close()\n",
"# model = model_from_json(loaded_model_json)\n",
"# model.load_weights(\"model1.h5\")\n",
"# model.compile(loss=\"mean_squared_error\", optimizer=\"rmsprop\", metrics=['accuracy'])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T01:28:32.815770Z",
"start_time": "2019-04-10T01:28:32.391145Z"
}
},
"outputs": [],
"source": [
"from keras.utils import plot_model\n",
"plot_model(loaded_model, to_file='model.png')\n",
"from IPython.display import SVG\n",
"from keras.utils.vis_utils import model_to_dot\n",
"\n",
"SVG(model_to_dot(loaded_model).create(prog='dot', format='svg'))\n",
"plot_model(loaded_model, to_file='model_plot.png')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T01:28:32.818765Z",
"start_time": "2019-04-10T00:57:47.928Z"
}
},
"outputs": [],
"source": [
"SVG(model_to_dot(loaded_model).create(prog='dot', format='svg'))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2019-04-10T04:21:01.192478Z",
"start_time": "2019-04-10T04:21:00.824059Z"
}
},
"outputs": [],
"source": [
"plt.plot(y_test)\n",
"plt.plot(p)\n",
"plt.legend(['testY', 'p'], loc='upper right')\n",
"plt.title(mean_squared_error(y_test, p))\n",
"# plt.savefig(datetime.datetime.now())\n",
"plt.show()\n",
"print(mean_squared_error(y_test, p))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"p = model.predict(x_test)\n",
"\n",
"plt.plot(y_test)\n",
"plt.plot(p)\n",
"plt.legend(['testY', 'p'], loc='upper right')\n",
"plt.title(mean_squared_error(y_test, p))\n",
"# plt.savefig(datetime.datetime.now())\n",
"plt.savefig(name)\n",
"plt.show()\n",
"print(mean_squared_error(y_test, p))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"data = y # p\n",
"scaler = MinMaxScaler(feature_range=(0, 1))\n",
"data = scaler.fit_transform(data)\n",
"x = np.arange(0, len(y))\n",
"x=x.reshape(len(x),1)\n",
"x = scaler.fit_transform(x)\n",
"\n",
"train_size = int(len(data) * 0.80)\n",
"test_size = len(data) - train_size\n",
"\n",
"y_train = data[0:train_size]\n",
"y_test = data[train_size:len(data)]\n",
"x_train = x[0:train_size]\n",
"x_test = x[train_size:len(x)]\n",
"# from sklearn.model_selection import train_test_split\n",
"# x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.8, random_state=42)\n",
"\n",
"XGBModel = XGBRegressor()\n",
"XGBModel.fit(x_train,y_train, verbose=False)\n",
"\n",
"p = XGBModel.predict(x_test)\n",
"plt.plot(y_test)\n",
"plt.plot(p)\n",
"plt.legend(['y_test', 'p'], loc='upper right')\n",
"plt.title(mean_squared_error(y_test, p))\n",
"\n",
"plt.show()\n",
"print(mean_squared_error(y_test, p))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.plot(p)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.plot(y_test)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "me",
"language": "python",
"name": "me"
},
"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.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment