├── ANN.ipynb ├── README.md ├── example.csv ├── international-airline-passengers.csv ├── lstm.ipynb ├── predict_result_ann.csv └── predict_result_lstm.csv /ANN.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 65, 6 | "metadata": { 7 | "colab": {}, 8 | "colab_type": "code", 9 | "executionInfo": { 10 | "elapsed": 2587, 11 | "status": "ok", 12 | "timestamp": 1597492072008, 13 | "user": { 14 | "displayName": "Expss Xu", 15 | "photoUrl": "", 16 | "userId": "17480852382145563764" 17 | }, 18 | "user_tz": -480 19 | }, 20 | "id": "5NCGpNCVotjd" 21 | }, 22 | "outputs": [], 23 | "source": [ 24 | "#导入必须的库\n", 25 | "import numpy as np\n", 26 | "import matplotlib.pyplot as plt\n", 27 | "import pandas as pd\n", 28 | "from sklearn.metrics import mean_squared_error\n", 29 | "from sklearn.metrics import mean_absolute_error\n", 30 | "plt.style.use('fivethirtyeight')#画图风格\n", 31 | "np.random.seed(100)\n", 32 | "window=12#时间窗\n", 33 | "label_dim=3#标签纬度\n", 34 | "scale=100#归一化参数\n", 35 | "amount_of_features=1#特征数量\n", 36 | "d=0.05#dropout系数\n", 37 | "batch_size=64#批训练数量\n", 38 | "epoch=200#总迭代次数\n", 39 | "train_file='international-airline-passengers.csv'#读取训练集地址\n", 40 | "test_file='example.csv'#读取训练集地址\n", 41 | "save_file='predict_result_ann.csv'#储存预测值地址" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 66, 47 | "metadata": {}, 48 | "outputs": [ 49 | { 50 | "data": { 51 | "image/png": "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\n", 52 | "text/plain": [ 53 | "
" 54 | ] 55 | }, 56 | "metadata": {}, 57 | "output_type": "display_data" 58 | } 59 | ], 60 | "source": [ 61 | "data=pd.read_csv(train_file,header=0) \n", 62 | "data=data['passengers']#选数据集的哪一列\n", 63 | "#构造针对机器学习模型的数据集\n", 64 | "data=data.values \n", 65 | "dataset=data\n", 66 | "for i in range(window+label_dim-1):\n", 67 | " zero=np.zeros(i+1)\n", 68 | " temp=np.append(data[i+1:],zero)\n", 69 | " dataset=np.row_stack((dataset,temp))\n", 70 | "dataset=pd.DataFrame(dataset).T\n", 71 | "dataset=dataset.iloc[:-(window+label_dim)]\n", 72 | "dataset=dataset/scale#进行伪归一化\n", 73 | "import seaborn as sns\n", 74 | "plt.figure(figsize=(10,5))\n", 75 | "sns.heatmap(dataset,annot=False)\n", 76 | "plt.show()#展示下原始数据集" 77 | ] 78 | }, 79 | { 80 | "cell_type": "code", 81 | "execution_count": 67, 82 | "metadata": {}, 83 | "outputs": [], 84 | "source": [ 85 | "#划分特征与标签\n", 86 | "X=dataset.iloc[:,:window]\n", 87 | "y=dataset.iloc[:,-label_dim:]" 88 | ] 89 | }, 90 | { 91 | "cell_type": "code", 92 | "execution_count": 68, 93 | "metadata": { 94 | "colab": { 95 | "base_uri": "https://localhost:8080/", 96 | "height": 89 97 | }, 98 | "colab_type": "code", 99 | "executionInfo": { 100 | "elapsed": 2576, 101 | "status": "ok", 102 | "timestamp": 1597492072008, 103 | "user": { 104 | "displayName": "Expss Xu", 105 | "photoUrl": "", 106 | "userId": "17480852382145563764" 107 | }, 108 | "user_tz": -480 109 | }, 110 | "id": "UqmQarL8otjj", 111 | "outputId": "068dd905-8a38-40c6-c417-1407aca65c65" 112 | }, 113 | "outputs": [ 114 | { 115 | "name": "stdout", 116 | "output_type": "stream", 117 | "text": [ 118 | "(129, 12)\n", 119 | "(129, 3)\n" 120 | ] 121 | } 122 | ], 123 | "source": [ 124 | "#构造训练集测试集\n", 125 | "X,y=X.values,y.values\n", 126 | "print(X.shape)#通过输出训练集测试集的大小来判断数据格式正确。\n", 127 | "print(y.shape)" 128 | ] 129 | }, 130 | { 131 | "cell_type": "code", 132 | "execution_count": 69, 133 | "metadata": { 134 | "colab": { 135 | "base_uri": "https://localhost:8080/", 136 | "height": 269 137 | }, 138 | "colab_type": "code", 139 | "executionInfo": { 140 | "elapsed": 3600, 141 | "status": "ok", 142 | "timestamp": 1597492073045, 143 | "user": { 144 | "displayName": "Expss Xu", 145 | "photoUrl": "", 146 | "userId": "17480852382145563764" 147 | }, 148 | "user_tz": -480 149 | }, 150 | "id": "i0dUbIgGotjq", 151 | "outputId": "9a38af4d-6447-4c0c-c7b0-d6b70db24324" 152 | }, 153 | "outputs": [ 154 | { 155 | "name": "stdout", 156 | "output_type": "stream", 157 | "text": [ 158 | "_________________________________________________________________\n", 159 | "Layer (type) Output Shape Param # \n", 160 | "=================================================================\n", 161 | "dense_16 (Dense) (None, 12) 156 \n", 162 | "_________________________________________________________________\n", 163 | "dense_17 (Dense) (None, 3) 39 \n", 164 | "=================================================================\n", 165 | "Total params: 195\n", 166 | "Trainable params: 195\n", 167 | "Non-trainable params: 0\n", 168 | "_________________________________________________________________\n" 169 | ] 170 | } 171 | ], 172 | "source": [ 173 | "#建立ANN模型 训练\n", 174 | "from keras.models import Sequential\n", 175 | "from keras.layers.core import Dense, Dropout, Activation,Dropout\n", 176 | "#from keras.layers.recurrent import LSTM\n", 177 | "#建立训练模型过程\n", 178 | "model = Sequential()#建立层次模型\n", 179 | "model.add(Dense(label_dim*4,input_dim=window,activation='relu'))#建立LSTM层\n", 180 | "#model.add(Dropout(d))\n", 181 | "#model.add(Dense(label_dim*2,activation='relu')) #建立全连接层 \n", 182 | "#model.add(Dropout(d))\n", 183 | "model.add(Dense(label_dim))\n", 184 | "model.compile(loss='mse',optimizer='adam',metrics=['accuracy'])\n", 185 | "model.summary()" 186 | ] 187 | }, 188 | { 189 | "cell_type": "code", 190 | "execution_count": 70, 191 | "metadata": { 192 | "colab": { 193 | "base_uri": "https://localhost:8080/", 194 | "height": 1000 195 | }, 196 | "colab_type": "code", 197 | "executionInfo": { 198 | "elapsed": 22110, 199 | "status": "ok", 200 | "timestamp": 1597492091563, 201 | "user": { 202 | "displayName": "Expss Xu", 203 | "photoUrl": "", 204 | "userId": "17480852382145563764" 205 | }, 206 | "user_tz": -480 207 | }, 208 | "id": "j1TvX44ootjs", 209 | "outputId": "9987a27f-6bcf-4bfb-d47f-b95c46501fe0", 210 | "scrolled": false 211 | }, 212 | "outputs": [ 213 | { 214 | "name": "stdout", 215 | "output_type": "stream", 216 | "text": [ 217 | "Train on 116 samples, validate on 13 samples\n", 218 | "Epoch 1/200\n", 219 | "116/116 [==============================] - 0s 3ms/step - loss: 8.4813 - acc: 0.3017 - val_loss: 20.8116 - val_acc: 0.3846\n", 220 | "Epoch 2/200\n", 221 | "116/116 [==============================] - 0s 39us/step - loss: 7.7277 - acc: 0.3017 - val_loss: 18.9391 - val_acc: 0.3846\n", 222 | "Epoch 3/200\n", 223 | "116/116 [==============================] - 0s 46us/step - loss: 7.0065 - acc: 0.3017 - val_loss: 17.1723 - val_acc: 0.3846\n", 224 | "Epoch 4/200\n", 225 | "116/116 [==============================] - 0s 40us/step - loss: 6.3747 - acc: 0.3017 - val_loss: 15.5042 - val_acc: 0.3846\n", 226 | "Epoch 5/200\n", 227 | "116/116 [==============================] - 0s 49us/step - loss: 5.7395 - acc: 0.3017 - val_loss: 13.9637 - val_acc: 0.3846\n", 228 | "Epoch 6/200\n", 229 | "116/116 [==============================] - 0s 43us/step - loss: 5.1677 - acc: 0.3017 - val_loss: 12.5453 - val_acc: 0.3846\n", 230 | "Epoch 7/200\n", 231 | "116/116 [==============================] - 0s 49us/step - loss: 4.6219 - acc: 0.3017 - val_loss: 11.2236 - val_acc: 0.3846\n", 232 | "Epoch 8/200\n", 233 | "116/116 [==============================] - 0s 56us/step - loss: 4.1258 - acc: 0.3017 - val_loss: 10.0057 - val_acc: 0.3846\n", 234 | "Epoch 9/200\n", 235 | "116/116 [==============================] - 0s 45us/step - loss: 3.6633 - acc: 0.3017 - val_loss: 8.8746 - val_acc: 0.3846\n", 236 | "Epoch 10/200\n", 237 | "116/116 [==============================] - 0s 51us/step - loss: 3.2410 - acc: 0.3017 - val_loss: 7.8359 - val_acc: 0.3846\n", 238 | "Epoch 11/200\n", 239 | "116/116 [==============================] - 0s 40us/step - loss: 2.8573 - acc: 0.3017 - val_loss: 6.8887 - val_acc: 0.3846\n", 240 | "Epoch 12/200\n", 241 | "116/116 [==============================] - 0s 82us/step - loss: 2.5010 - acc: 0.3017 - val_loss: 6.0361 - val_acc: 0.3846\n", 242 | "Epoch 13/200\n", 243 | "116/116 [==============================] - 0s 114us/step - loss: 2.2028 - acc: 0.3017 - val_loss: 5.2678 - val_acc: 0.3846\n", 244 | "Epoch 14/200\n", 245 | "116/116 [==============================] - 0s 47us/step - loss: 1.9072 - acc: 0.3017 - val_loss: 4.5832 - val_acc: 0.3846\n", 246 | "Epoch 15/200\n", 247 | "116/116 [==============================] - 0s 43us/step - loss: 1.6556 - acc: 0.3017 - val_loss: 3.9673 - val_acc: 0.3846\n", 248 | "Epoch 16/200\n", 249 | "116/116 [==============================] - 0s 44us/step - loss: 1.4311 - acc: 0.3017 - val_loss: 3.4235 - val_acc: 0.3846\n", 250 | "Epoch 17/200\n", 251 | "116/116 [==============================] - 0s 39us/step - loss: 1.2322 - acc: 0.3017 - val_loss: 2.9465 - val_acc: 0.3846\n", 252 | "Epoch 18/200\n", 253 | "116/116 [==============================] - 0s 51us/step - loss: 1.0583 - acc: 0.3017 - val_loss: 2.5286 - val_acc: 0.3846\n", 254 | "Epoch 19/200\n", 255 | "116/116 [==============================] - 0s 47us/step - loss: 0.9025 - acc: 0.3017 - val_loss: 2.1643 - val_acc: 0.3846\n", 256 | "Epoch 20/200\n", 257 | "116/116 [==============================] - 0s 34us/step - loss: 0.7694 - acc: 0.3017 - val_loss: 1.8526 - val_acc: 0.3846\n", 258 | "Epoch 21/200\n", 259 | "116/116 [==============================] - 0s 43us/step - loss: 0.6584 - acc: 0.3017 - val_loss: 1.5854 - val_acc: 0.3846\n", 260 | "Epoch 22/200\n", 261 | "116/116 [==============================] - 0s 47us/step - loss: 0.5604 - acc: 0.3017 - val_loss: 1.3594 - val_acc: 0.3846\n", 262 | "Epoch 23/200\n", 263 | "116/116 [==============================] - 0s 42us/step - loss: 0.4758 - acc: 0.3017 - val_loss: 1.1701 - val_acc: 0.3846\n", 264 | "Epoch 24/200\n", 265 | "116/116 [==============================] - 0s 36us/step - loss: 0.4072 - acc: 0.3017 - val_loss: 1.0126 - val_acc: 0.3846\n", 266 | "Epoch 25/200\n", 267 | "116/116 [==============================] - 0s 36us/step - loss: 0.3508 - acc: 0.3017 - val_loss: 0.8830 - val_acc: 0.3846\n", 268 | "Epoch 26/200\n", 269 | "116/116 [==============================] - 0s 39us/step - loss: 0.3048 - acc: 0.2931 - val_loss: 0.7778 - val_acc: 0.3846\n", 270 | "Epoch 27/200\n", 271 | "116/116 [==============================] - 0s 49us/step - loss: 0.2662 - acc: 0.3103 - val_loss: 0.6935 - val_acc: 0.3077\n", 272 | "Epoch 28/200\n", 273 | "116/116 [==============================] - 0s 40us/step - loss: 0.2352 - acc: 0.2931 - val_loss: 0.6277 - val_acc: 0.3077\n", 274 | "Epoch 29/200\n", 275 | "116/116 [==============================] - 0s 41us/step - loss: 0.2116 - acc: 0.2414 - val_loss: 0.5764 - val_acc: 0.2308\n", 276 | "Epoch 30/200\n", 277 | "116/116 [==============================] - 0s 44us/step - loss: 0.1932 - acc: 0.2759 - val_loss: 0.5371 - val_acc: 0.3077\n", 278 | "Epoch 31/200\n", 279 | "116/116 [==============================] - 0s 42us/step - loss: 0.1784 - acc: 0.2672 - val_loss: 0.5076 - val_acc: 0.3077\n", 280 | "Epoch 32/200\n", 281 | "116/116 [==============================] - 0s 38us/step - loss: 0.1689 - acc: 0.2759 - val_loss: 0.4857 - val_acc: 0.2308\n", 282 | "Epoch 33/200\n", 283 | "116/116 [==============================] - 0s 60us/step - loss: 0.1620 - acc: 0.2931 - val_loss: 0.4698 - val_acc: 0.2308\n", 284 | "Epoch 34/200\n", 285 | "116/116 [==============================] - 0s 42us/step - loss: 0.1566 - acc: 0.3448 - val_loss: 0.4586 - val_acc: 0.2308\n", 286 | "Epoch 35/200\n", 287 | "116/116 [==============================] - 0s 71us/step - loss: 0.1530 - acc: 0.3534 - val_loss: 0.4511 - val_acc: 0.2308\n", 288 | "Epoch 36/200\n", 289 | "116/116 [==============================] - 0s 52us/step - loss: 0.1500 - acc: 0.3448 - val_loss: 0.4462 - val_acc: 0.2308\n", 290 | "Epoch 37/200\n", 291 | "116/116 [==============================] - 0s 108us/step - loss: 0.1488 - acc: 0.3448 - val_loss: 0.4431 - val_acc: 0.1538\n", 292 | "Epoch 38/200\n", 293 | "116/116 [==============================] - 0s 95us/step - loss: 0.1482 - acc: 0.3534 - val_loss: 0.4412 - val_acc: 0.1538\n", 294 | "Epoch 39/200\n", 295 | "116/116 [==============================] - 0s 109us/step - loss: 0.1479 - acc: 0.3707 - val_loss: 0.4402 - val_acc: 0.1538\n", 296 | "Epoch 40/200\n", 297 | "116/116 [==============================] - 0s 85us/step - loss: 0.1475 - acc: 0.3707 - val_loss: 0.4397 - val_acc: 0.1538\n", 298 | "Epoch 41/200\n", 299 | "116/116 [==============================] - 0s 130us/step - loss: 0.1477 - acc: 0.3793 - val_loss: 0.4393 - val_acc: 0.1538\n", 300 | "Epoch 42/200\n", 301 | "116/116 [==============================] - 0s 63us/step - loss: 0.1477 - acc: 0.4052 - val_loss: 0.4390 - val_acc: 0.1538\n", 302 | "Epoch 43/200\n", 303 | "116/116 [==============================] - 0s 51us/step - loss: 0.1477 - acc: 0.4052 - val_loss: 0.4385 - val_acc: 0.1538\n", 304 | "Epoch 44/200\n", 305 | "116/116 [==============================] - 0s 80us/step - loss: 0.1477 - acc: 0.4052 - val_loss: 0.4380 - val_acc: 0.1538\n", 306 | "Epoch 45/200\n", 307 | "116/116 [==============================] - 0s 58us/step - loss: 0.1474 - acc: 0.4052 - val_loss: 0.4372 - val_acc: 0.1538\n", 308 | "Epoch 46/200\n", 309 | "116/116 [==============================] - 0s 54us/step - loss: 0.1472 - acc: 0.4052 - val_loss: 0.4363 - val_acc: 0.1538\n", 310 | "Epoch 47/200\n", 311 | "116/116 [==============================] - 0s 47us/step - loss: 0.1469 - acc: 0.4052 - val_loss: 0.4353 - val_acc: 0.1538\n", 312 | "Epoch 48/200\n", 313 | "116/116 [==============================] - 0s 57us/step - loss: 0.1465 - acc: 0.4052 - val_loss: 0.4341 - val_acc: 0.1538\n", 314 | "Epoch 49/200\n", 315 | "116/116 [==============================] - 0s 51us/step - loss: 0.1461 - acc: 0.4052 - val_loss: 0.4330 - val_acc: 0.1538\n", 316 | "Epoch 50/200\n", 317 | "116/116 [==============================] - 0s 57us/step - loss: 0.1457 - acc: 0.4052 - val_loss: 0.4316 - val_acc: 0.1538\n", 318 | "Epoch 51/200\n", 319 | "116/116 [==============================] - 0s 68us/step - loss: 0.1452 - acc: 0.4052 - val_loss: 0.4303 - val_acc: 0.1538\n", 320 | "Epoch 52/200\n", 321 | "116/116 [==============================] - 0s 78us/step - loss: 0.1448 - acc: 0.4052 - val_loss: 0.4290 - val_acc: 0.1538\n", 322 | "Epoch 53/200\n", 323 | "116/116 [==============================] - 0s 69us/step - loss: 0.1443 - acc: 0.4052 - val_loss: 0.4278 - val_acc: 0.1538\n", 324 | "Epoch 54/200\n", 325 | "116/116 [==============================] - 0s 86us/step - loss: 0.1438 - acc: 0.4052 - val_loss: 0.4267 - val_acc: 0.1538\n", 326 | "Epoch 55/200\n", 327 | "116/116 [==============================] - 0s 40us/step - loss: 0.1436 - acc: 0.3966 - val_loss: 0.4256 - val_acc: 0.1538\n", 328 | "Epoch 56/200\n", 329 | "116/116 [==============================] - 0s 59us/step - loss: 0.1431 - acc: 0.3879 - val_loss: 0.4246 - val_acc: 0.1538\n", 330 | "Epoch 57/200\n", 331 | "116/116 [==============================] - 0s 47us/step - loss: 0.1428 - acc: 0.3879 - val_loss: 0.4236 - val_acc: 0.1538\n", 332 | "Epoch 58/200\n", 333 | "116/116 [==============================] - 0s 52us/step - loss: 0.1425 - acc: 0.3707 - val_loss: 0.4226 - val_acc: 0.1538\n", 334 | "Epoch 59/200\n", 335 | "116/116 [==============================] - 0s 51us/step - loss: 0.1421 - acc: 0.3707 - val_loss: 0.4216 - val_acc: 0.1538\n", 336 | "Epoch 60/200\n", 337 | "116/116 [==============================] - 0s 47us/step - loss: 0.1417 - acc: 0.3707 - val_loss: 0.4207 - val_acc: 0.1538\n", 338 | "Epoch 61/200\n" 339 | ] 340 | }, 341 | { 342 | "name": "stdout", 343 | "output_type": "stream", 344 | "text": [ 345 | "116/116 [==============================] - 0s 57us/step - loss: 0.1414 - acc: 0.3707 - val_loss: 0.4198 - val_acc: 0.1538\n", 346 | "Epoch 62/200\n", 347 | "116/116 [==============================] - 0s 69us/step - loss: 0.1411 - acc: 0.3707 - val_loss: 0.4188 - val_acc: 0.1538\n", 348 | "Epoch 63/200\n", 349 | "116/116 [==============================] - 0s 46us/step - loss: 0.1409 - acc: 0.3707 - val_loss: 0.4178 - val_acc: 0.1538\n", 350 | "Epoch 64/200\n", 351 | "116/116 [==============================] - 0s 73us/step - loss: 0.1405 - acc: 0.3707 - val_loss: 0.4168 - val_acc: 0.1538\n", 352 | "Epoch 65/200\n", 353 | "116/116 [==============================] - 0s 66us/step - loss: 0.1402 - acc: 0.3707 - val_loss: 0.4159 - val_acc: 0.1538\n", 354 | "Epoch 66/200\n", 355 | "116/116 [==============================] - 0s 72us/step - loss: 0.1399 - acc: 0.3707 - val_loss: 0.4149 - val_acc: 0.1538\n", 356 | "Epoch 67/200\n", 357 | "116/116 [==============================] - 0s 72us/step - loss: 0.1396 - acc: 0.3707 - val_loss: 0.4138 - val_acc: 0.1538\n", 358 | "Epoch 68/200\n", 359 | "116/116 [==============================] - 0s 94us/step - loss: 0.1392 - acc: 0.3707 - val_loss: 0.4128 - val_acc: 0.1538\n", 360 | "Epoch 69/200\n", 361 | "116/116 [==============================] - 0s 71us/step - loss: 0.1389 - acc: 0.3707 - val_loss: 0.4118 - val_acc: 0.1538\n", 362 | "Epoch 70/200\n", 363 | "116/116 [==============================] - 0s 52us/step - loss: 0.1386 - acc: 0.3621 - val_loss: 0.4108 - val_acc: 0.1538\n", 364 | "Epoch 71/200\n", 365 | "116/116 [==============================] - 0s 62us/step - loss: 0.1383 - acc: 0.3621 - val_loss: 0.4096 - val_acc: 0.1538\n", 366 | "Epoch 72/200\n", 367 | "116/116 [==============================] - 0s 99us/step - loss: 0.1380 - acc: 0.3621 - val_loss: 0.4085 - val_acc: 0.1538\n", 368 | "Epoch 73/200\n", 369 | "116/116 [==============================] - ETA: 0s - loss: 0.1583 - acc: 0.406 - 0s 98us/step - loss: 0.1376 - acc: 0.3621 - val_loss: 0.4075 - val_acc: 0.1538\n", 370 | "Epoch 74/200\n", 371 | "116/116 [==============================] - 0s 94us/step - loss: 0.1373 - acc: 0.3621 - val_loss: 0.4065 - val_acc: 0.1538\n", 372 | "Epoch 75/200\n", 373 | "116/116 [==============================] - 0s 108us/step - loss: 0.1370 - acc: 0.3621 - val_loss: 0.4054 - val_acc: 0.1538\n", 374 | "Epoch 76/200\n", 375 | "116/116 [==============================] - ETA: 0s - loss: 0.1578 - acc: 0.328 - 0s 130us/step - loss: 0.1367 - acc: 0.3621 - val_loss: 0.4043 - val_acc: 0.1538\n", 376 | "Epoch 77/200\n", 377 | "116/116 [==============================] - 0s 116us/step - loss: 0.1363 - acc: 0.3621 - val_loss: 0.4031 - val_acc: 0.1538\n", 378 | "Epoch 78/200\n", 379 | "116/116 [==============================] - 0s 114us/step - loss: 0.1360 - acc: 0.3621 - val_loss: 0.4019 - val_acc: 0.1538\n", 380 | "Epoch 79/200\n", 381 | "116/116 [==============================] - 0s 93us/step - loss: 0.1356 - acc: 0.3621 - val_loss: 0.4008 - val_acc: 0.2308\n", 382 | "Epoch 80/200\n", 383 | "116/116 [==============================] - 0s 125us/step - loss: 0.1353 - acc: 0.3621 - val_loss: 0.3996 - val_acc: 0.2308\n", 384 | "Epoch 81/200\n", 385 | "116/116 [==============================] - 0s 95us/step - loss: 0.1350 - acc: 0.3621 - val_loss: 0.3983 - val_acc: 0.2308\n", 386 | "Epoch 82/200\n", 387 | "116/116 [==============================] - 0s 111us/step - loss: 0.1346 - acc: 0.3621 - val_loss: 0.3972 - val_acc: 0.2308\n", 388 | "Epoch 83/200\n", 389 | "116/116 [==============================] - 0s 85us/step - loss: 0.1343 - acc: 0.3621 - val_loss: 0.3960 - val_acc: 0.2308\n", 390 | "Epoch 84/200\n", 391 | "116/116 [==============================] - 0s 96us/step - loss: 0.1340 - acc: 0.3621 - val_loss: 0.3947 - val_acc: 0.2308\n", 392 | "Epoch 85/200\n", 393 | "116/116 [==============================] - 0s 124us/step - loss: 0.1336 - acc: 0.3707 - val_loss: 0.3935 - val_acc: 0.2308\n", 394 | "Epoch 86/200\n", 395 | "116/116 [==============================] - 0s 113us/step - loss: 0.1332 - acc: 0.3707 - val_loss: 0.3923 - val_acc: 0.2308\n", 396 | "Epoch 87/200\n", 397 | "116/116 [==============================] - 0s 121us/step - loss: 0.1329 - acc: 0.3707 - val_loss: 0.3911 - val_acc: 0.2308\n", 398 | "Epoch 88/200\n", 399 | "116/116 [==============================] - 0s 80us/step - loss: 0.1326 - acc: 0.3707 - val_loss: 0.3897 - val_acc: 0.2308\n", 400 | "Epoch 89/200\n", 401 | "116/116 [==============================] - 0s 49us/step - loss: 0.1322 - acc: 0.3707 - val_loss: 0.3884 - val_acc: 0.2308\n", 402 | "Epoch 90/200\n", 403 | "116/116 [==============================] - 0s 57us/step - loss: 0.1318 - acc: 0.3707 - val_loss: 0.3871 - val_acc: 0.2308\n", 404 | "Epoch 91/200\n", 405 | "116/116 [==============================] - 0s 54us/step - loss: 0.1315 - acc: 0.3621 - val_loss: 0.3858 - val_acc: 0.2308\n", 406 | "Epoch 92/200\n", 407 | "116/116 [==============================] - 0s 49us/step - loss: 0.1311 - acc: 0.3707 - val_loss: 0.3844 - val_acc: 0.2308\n", 408 | "Epoch 93/200\n", 409 | "116/116 [==============================] - 0s 54us/step - loss: 0.1307 - acc: 0.3707 - val_loss: 0.3831 - val_acc: 0.2308\n", 410 | "Epoch 94/200\n", 411 | "116/116 [==============================] - 0s 61us/step - loss: 0.1304 - acc: 0.3707 - val_loss: 0.3816 - val_acc: 0.2308\n", 412 | "Epoch 95/200\n", 413 | "116/116 [==============================] - 0s 52us/step - loss: 0.1301 - acc: 0.3707 - val_loss: 0.3802 - val_acc: 0.2308\n", 414 | "Epoch 96/200\n", 415 | "116/116 [==============================] - 0s 49us/step - loss: 0.1296 - acc: 0.3707 - val_loss: 0.3789 - val_acc: 0.2308\n", 416 | "Epoch 97/200\n", 417 | "116/116 [==============================] - 0s 78us/step - loss: 0.1293 - acc: 0.3707 - val_loss: 0.3776 - val_acc: 0.2308\n", 418 | "Epoch 98/200\n", 419 | "116/116 [==============================] - 0s 43us/step - loss: 0.1289 - acc: 0.3707 - val_loss: 0.3763 - val_acc: 0.2308\n", 420 | "Epoch 99/200\n", 421 | "116/116 [==============================] - 0s 52us/step - loss: 0.1285 - acc: 0.3707 - val_loss: 0.3751 - val_acc: 0.2308\n", 422 | "Epoch 100/200\n", 423 | "116/116 [==============================] - 0s 50us/step - loss: 0.1282 - acc: 0.3707 - val_loss: 0.3738 - val_acc: 0.2308\n", 424 | "Epoch 101/200\n", 425 | "116/116 [==============================] - 0s 52us/step - loss: 0.1278 - acc: 0.3707 - val_loss: 0.3726 - val_acc: 0.2308\n", 426 | "Epoch 102/200\n", 427 | "116/116 [==============================] - 0s 48us/step - loss: 0.1274 - acc: 0.3707 - val_loss: 0.3713 - val_acc: 0.2308\n", 428 | "Epoch 103/200\n", 429 | "116/116 [==============================] - 0s 51us/step - loss: 0.1271 - acc: 0.3707 - val_loss: 0.3700 - val_acc: 0.2308\n", 430 | "Epoch 104/200\n", 431 | "116/116 [==============================] - 0s 45us/step - loss: 0.1267 - acc: 0.3707 - val_loss: 0.3687 - val_acc: 0.2308\n", 432 | "Epoch 105/200\n", 433 | "116/116 [==============================] - 0s 39us/step - loss: 0.1263 - acc: 0.3707 - val_loss: 0.3673 - val_acc: 0.2308\n", 434 | "Epoch 106/200\n", 435 | "116/116 [==============================] - 0s 46us/step - loss: 0.1259 - acc: 0.3707 - val_loss: 0.3659 - val_acc: 0.2308\n", 436 | "Epoch 107/200\n", 437 | "116/116 [==============================] - 0s 52us/step - loss: 0.1255 - acc: 0.3707 - val_loss: 0.3644 - val_acc: 0.2308\n", 438 | "Epoch 108/200\n", 439 | "116/116 [==============================] - 0s 51us/step - loss: 0.1251 - acc: 0.3707 - val_loss: 0.3629 - val_acc: 0.2308\n", 440 | "Epoch 109/200\n", 441 | "116/116 [==============================] - 0s 43us/step - loss: 0.1247 - acc: 0.3707 - val_loss: 0.3614 - val_acc: 0.2308\n", 442 | "Epoch 110/200\n", 443 | "116/116 [==============================] - 0s 42us/step - loss: 0.1242 - acc: 0.3707 - val_loss: 0.3599 - val_acc: 0.3077\n", 444 | "Epoch 111/200\n", 445 | "116/116 [==============================] - 0s 50us/step - loss: 0.1238 - acc: 0.3707 - val_loss: 0.3584 - val_acc: 0.3077\n", 446 | "Epoch 112/200\n", 447 | "116/116 [==============================] - 0s 50us/step - loss: 0.1235 - acc: 0.3707 - val_loss: 0.3569 - val_acc: 0.3077\n", 448 | "Epoch 113/200\n", 449 | "116/116 [==============================] - 0s 56us/step - loss: 0.1231 - acc: 0.3707 - val_loss: 0.3555 - val_acc: 0.3077\n", 450 | "Epoch 114/200\n", 451 | "116/116 [==============================] - 0s 53us/step - loss: 0.1226 - acc: 0.3707 - val_loss: 0.3541 - val_acc: 0.3077\n", 452 | "Epoch 115/200\n", 453 | "116/116 [==============================] - 0s 43us/step - loss: 0.1222 - acc: 0.3707 - val_loss: 0.3528 - val_acc: 0.3077\n", 454 | "Epoch 116/200\n", 455 | "116/116 [==============================] - 0s 43us/step - loss: 0.1219 - acc: 0.3707 - val_loss: 0.3514 - val_acc: 0.3077\n", 456 | "Epoch 117/200\n", 457 | "116/116 [==============================] - 0s 57us/step - loss: 0.1214 - acc: 0.3707 - val_loss: 0.3501 - val_acc: 0.3077\n", 458 | "Epoch 118/200\n", 459 | "116/116 [==============================] - 0s 68us/step - loss: 0.1210 - acc: 0.3707 - val_loss: 0.3488 - val_acc: 0.3077\n", 460 | "Epoch 119/200\n", 461 | "116/116 [==============================] - 0s 62us/step - loss: 0.1206 - acc: 0.3707 - val_loss: 0.3475 - val_acc: 0.3077\n", 462 | "Epoch 120/200\n", 463 | "116/116 [==============================] - 0s 91us/step - loss: 0.1203 - acc: 0.3707 - val_loss: 0.3462 - val_acc: 0.3077\n" 464 | ] 465 | }, 466 | { 467 | "name": "stdout", 468 | "output_type": "stream", 469 | "text": [ 470 | "Epoch 121/200\n", 471 | "116/116 [==============================] - 0s 68us/step - loss: 0.1199 - acc: 0.3707 - val_loss: 0.3448 - val_acc: 0.3077\n", 472 | "Epoch 122/200\n", 473 | "116/116 [==============================] - 0s 82us/step - loss: 0.1195 - acc: 0.3707 - val_loss: 0.3434 - val_acc: 0.3077\n", 474 | "Epoch 123/200\n", 475 | "116/116 [==============================] - 0s 89us/step - loss: 0.1191 - acc: 0.3707 - val_loss: 0.3421 - val_acc: 0.3077\n", 476 | "Epoch 124/200\n", 477 | "116/116 [==============================] - 0s 55us/step - loss: 0.1188 - acc: 0.3707 - val_loss: 0.3407 - val_acc: 0.3077\n", 478 | "Epoch 125/200\n", 479 | "116/116 [==============================] - 0s 96us/step - loss: 0.1184 - acc: 0.3707 - val_loss: 0.3393 - val_acc: 0.3077\n", 480 | "Epoch 126/200\n", 481 | "116/116 [==============================] - 0s 48us/step - loss: 0.1180 - acc: 0.3707 - val_loss: 0.3378 - val_acc: 0.3077\n", 482 | "Epoch 127/200\n", 483 | "116/116 [==============================] - 0s 49us/step - loss: 0.1176 - acc: 0.3707 - val_loss: 0.3365 - val_acc: 0.3077\n", 484 | "Epoch 128/200\n", 485 | "116/116 [==============================] - 0s 59us/step - loss: 0.1173 - acc: 0.3707 - val_loss: 0.3351 - val_acc: 0.3077\n", 486 | "Epoch 129/200\n", 487 | "116/116 [==============================] - 0s 56us/step - loss: 0.1169 - acc: 0.3707 - val_loss: 0.3338 - val_acc: 0.3077\n", 488 | "Epoch 130/200\n", 489 | "116/116 [==============================] - 0s 62us/step - loss: 0.1166 - acc: 0.3707 - val_loss: 0.3325 - val_acc: 0.3077\n", 490 | "Epoch 131/200\n", 491 | "116/116 [==============================] - 0s 59us/step - loss: 0.1162 - acc: 0.3707 - val_loss: 0.3313 - val_acc: 0.3077\n", 492 | "Epoch 132/200\n", 493 | "116/116 [==============================] - 0s 52us/step - loss: 0.1159 - acc: 0.3707 - val_loss: 0.3300 - val_acc: 0.3077\n", 494 | "Epoch 133/200\n", 495 | "116/116 [==============================] - 0s 56us/step - loss: 0.1156 - acc: 0.3707 - val_loss: 0.3287 - val_acc: 0.3077\n", 496 | "Epoch 134/200\n", 497 | "116/116 [==============================] - 0s 40us/step - loss: 0.1152 - acc: 0.3707 - val_loss: 0.3275 - val_acc: 0.3077\n", 498 | "Epoch 135/200\n", 499 | "116/116 [==============================] - 0s 51us/step - loss: 0.1149 - acc: 0.3707 - val_loss: 0.3263 - val_acc: 0.3077\n", 500 | "Epoch 136/200\n", 501 | "116/116 [==============================] - 0s 52us/step - loss: 0.1146 - acc: 0.3707 - val_loss: 0.3251 - val_acc: 0.3077\n", 502 | "Epoch 137/200\n", 503 | "116/116 [==============================] - 0s 60us/step - loss: 0.1143 - acc: 0.3707 - val_loss: 0.3240 - val_acc: 0.3077\n", 504 | "Epoch 138/200\n", 505 | "116/116 [==============================] - 0s 54us/step - loss: 0.1140 - acc: 0.3707 - val_loss: 0.3228 - val_acc: 0.3077\n", 506 | "Epoch 139/200\n", 507 | "116/116 [==============================] - 0s 62us/step - loss: 0.1137 - acc: 0.3707 - val_loss: 0.3217 - val_acc: 0.3077\n", 508 | "Epoch 140/200\n", 509 | "116/116 [==============================] - 0s 63us/step - loss: 0.1133 - acc: 0.3707 - val_loss: 0.3206 - val_acc: 0.3077\n", 510 | "Epoch 141/200\n", 511 | "116/116 [==============================] - 0s 68us/step - loss: 0.1131 - acc: 0.3707 - val_loss: 0.3197 - val_acc: 0.3077\n", 512 | "Epoch 142/200\n", 513 | "116/116 [==============================] - 0s 64us/step - loss: 0.1127 - acc: 0.3707 - val_loss: 0.3187 - val_acc: 0.3077\n", 514 | "Epoch 143/200\n", 515 | "116/116 [==============================] - 0s 65us/step - loss: 0.1124 - acc: 0.3707 - val_loss: 0.3177 - val_acc: 0.3077\n", 516 | "Epoch 144/200\n", 517 | "116/116 [==============================] - 0s 57us/step - loss: 0.1121 - acc: 0.3707 - val_loss: 0.3167 - val_acc: 0.3077\n", 518 | "Epoch 145/200\n", 519 | "116/116 [==============================] - 0s 76us/step - loss: 0.1118 - acc: 0.3707 - val_loss: 0.3157 - val_acc: 0.3077\n", 520 | "Epoch 146/200\n", 521 | "116/116 [==============================] - 0s 82us/step - loss: 0.1115 - acc: 0.3707 - val_loss: 0.3147 - val_acc: 0.3077\n", 522 | "Epoch 147/200\n", 523 | "116/116 [==============================] - 0s 61us/step - loss: 0.1112 - acc: 0.3707 - val_loss: 0.3137 - val_acc: 0.3077\n", 524 | "Epoch 148/200\n", 525 | "116/116 [==============================] - 0s 49us/step - loss: 0.1109 - acc: 0.3707 - val_loss: 0.3127 - val_acc: 0.3077\n", 526 | "Epoch 149/200\n", 527 | "116/116 [==============================] - 0s 52us/step - loss: 0.1106 - acc: 0.3707 - val_loss: 0.3118 - val_acc: 0.3077\n", 528 | "Epoch 150/200\n", 529 | "116/116 [==============================] - 0s 48us/step - loss: 0.1103 - acc: 0.3707 - val_loss: 0.3109 - val_acc: 0.3077\n", 530 | "Epoch 151/200\n", 531 | "116/116 [==============================] - 0s 60us/step - loss: 0.1100 - acc: 0.3707 - val_loss: 0.3099 - val_acc: 0.3077\n", 532 | "Epoch 152/200\n", 533 | "116/116 [==============================] - 0s 60us/step - loss: 0.1098 - acc: 0.3707 - val_loss: 0.3091 - val_acc: 0.3077\n", 534 | "Epoch 153/200\n", 535 | "116/116 [==============================] - 0s 74us/step - loss: 0.1094 - acc: 0.3707 - val_loss: 0.3081 - val_acc: 0.3077\n", 536 | "Epoch 154/200\n", 537 | "116/116 [==============================] - 0s 50us/step - loss: 0.1091 - acc: 0.3707 - val_loss: 0.3070 - val_acc: 0.3077\n", 538 | "Epoch 155/200\n", 539 | "116/116 [==============================] - 0s 47us/step - loss: 0.1088 - acc: 0.3707 - val_loss: 0.3061 - val_acc: 0.3077\n", 540 | "Epoch 156/200\n", 541 | "116/116 [==============================] - 0s 46us/step - loss: 0.1085 - acc: 0.3793 - val_loss: 0.3051 - val_acc: 0.3077\n", 542 | "Epoch 157/200\n", 543 | "116/116 [==============================] - 0s 56us/step - loss: 0.1082 - acc: 0.3793 - val_loss: 0.3041 - val_acc: 0.3077\n", 544 | "Epoch 158/200\n", 545 | "116/116 [==============================] - 0s 53us/step - loss: 0.1079 - acc: 0.3793 - val_loss: 0.3032 - val_acc: 0.3077\n", 546 | "Epoch 159/200\n", 547 | "116/116 [==============================] - 0s 53us/step - loss: 0.1077 - acc: 0.3793 - val_loss: 0.3022 - val_acc: 0.3077\n", 548 | "Epoch 160/200\n", 549 | "116/116 [==============================] - 0s 46us/step - loss: 0.1074 - acc: 0.3879 - val_loss: 0.3013 - val_acc: 0.3077\n", 550 | "Epoch 161/200\n", 551 | "116/116 [==============================] - 0s 48us/step - loss: 0.1071 - acc: 0.3879 - val_loss: 0.3004 - val_acc: 0.3077\n", 552 | "Epoch 162/200\n", 553 | "116/116 [==============================] - 0s 51us/step - loss: 0.1068 - acc: 0.3879 - val_loss: 0.2995 - val_acc: 0.3077\n", 554 | "Epoch 163/200\n", 555 | "116/116 [==============================] - 0s 50us/step - loss: 0.1065 - acc: 0.3793 - val_loss: 0.2987 - val_acc: 0.3077\n", 556 | "Epoch 164/200\n", 557 | "116/116 [==============================] - 0s 60us/step - loss: 0.1062 - acc: 0.3793 - val_loss: 0.2979 - val_acc: 0.3077\n", 558 | "Epoch 165/200\n", 559 | "116/116 [==============================] - 0s 61us/step - loss: 0.1060 - acc: 0.3793 - val_loss: 0.2971 - val_acc: 0.3077\n", 560 | "Epoch 166/200\n", 561 | "116/116 [==============================] - 0s 67us/step - loss: 0.1057 - acc: 0.3793 - val_loss: 0.2962 - val_acc: 0.3077\n", 562 | "Epoch 167/200\n", 563 | "116/116 [==============================] - 0s 65us/step - loss: 0.1054 - acc: 0.3793 - val_loss: 0.2953 - val_acc: 0.3077\n", 564 | "Epoch 168/200\n", 565 | "116/116 [==============================] - 0s 79us/step - loss: 0.1052 - acc: 0.3793 - val_loss: 0.2944 - val_acc: 0.3077\n", 566 | "Epoch 169/200\n", 567 | "116/116 [==============================] - 0s 95us/step - loss: 0.1049 - acc: 0.3793 - val_loss: 0.2934 - val_acc: 0.3077\n", 568 | "Epoch 170/200\n", 569 | "116/116 [==============================] - 0s 94us/step - loss: 0.1046 - acc: 0.3793 - val_loss: 0.2925 - val_acc: 0.3077\n", 570 | "Epoch 171/200\n", 571 | "116/116 [==============================] - 0s 48us/step - loss: 0.1043 - acc: 0.3879 - val_loss: 0.2915 - val_acc: 0.3077\n", 572 | "Epoch 172/200\n", 573 | "116/116 [==============================] - 0s 73us/step - loss: 0.1041 - acc: 0.3879 - val_loss: 0.2905 - val_acc: 0.3077\n", 574 | "Epoch 173/200\n", 575 | "116/116 [==============================] - 0s 76us/step - loss: 0.1038 - acc: 0.3879 - val_loss: 0.2896 - val_acc: 0.3077\n", 576 | "Epoch 174/200\n", 577 | "116/116 [==============================] - 0s 55us/step - loss: 0.1035 - acc: 0.3966 - val_loss: 0.2886 - val_acc: 0.3077\n", 578 | "Epoch 175/200\n", 579 | "116/116 [==============================] - 0s 68us/step - loss: 0.1033 - acc: 0.3966 - val_loss: 0.2875 - val_acc: 0.3077\n", 580 | "Epoch 176/200\n", 581 | "116/116 [==============================] - 0s 54us/step - loss: 0.1030 - acc: 0.3966 - val_loss: 0.2866 - val_acc: 0.3077\n", 582 | "Epoch 177/200\n", 583 | "116/116 [==============================] - 0s 52us/step - loss: 0.1028 - acc: 0.4052 - val_loss: 0.2857 - val_acc: 0.3077\n", 584 | "Epoch 178/200\n", 585 | "116/116 [==============================] - 0s 75us/step - loss: 0.1026 - acc: 0.4052 - val_loss: 0.2849 - val_acc: 0.3077\n", 586 | "Epoch 179/200\n", 587 | "116/116 [==============================] - 0s 47us/step - loss: 0.1023 - acc: 0.4052 - val_loss: 0.2840 - val_acc: 0.3077\n", 588 | "Epoch 180/200\n", 589 | "116/116 [==============================] - 0s 59us/step - loss: 0.1021 - acc: 0.4052 - val_loss: 0.2832 - val_acc: 0.3077\n", 590 | "Epoch 181/200\n" 591 | ] 592 | }, 593 | { 594 | "name": "stdout", 595 | "output_type": "stream", 596 | "text": [ 597 | "116/116 [==============================] - 0s 70us/step - loss: 0.1018 - acc: 0.4052 - val_loss: 0.2824 - val_acc: 0.3077\n", 598 | "Epoch 182/200\n", 599 | "116/116 [==============================] - 0s 76us/step - loss: 0.1016 - acc: 0.4052 - val_loss: 0.2816 - val_acc: 0.3077\n", 600 | "Epoch 183/200\n", 601 | "116/116 [==============================] - 0s 101us/step - loss: 0.1014 - acc: 0.3966 - val_loss: 0.2808 - val_acc: 0.3077\n", 602 | "Epoch 184/200\n", 603 | "116/116 [==============================] - 0s 47us/step - loss: 0.1012 - acc: 0.3966 - val_loss: 0.2800 - val_acc: 0.3077\n", 604 | "Epoch 185/200\n", 605 | "116/116 [==============================] - 0s 78us/step - loss: 0.1009 - acc: 0.3966 - val_loss: 0.2791 - val_acc: 0.3077\n", 606 | "Epoch 186/200\n", 607 | "116/116 [==============================] - 0s 78us/step - loss: 0.1007 - acc: 0.3966 - val_loss: 0.2783 - val_acc: 0.3077\n", 608 | "Epoch 187/200\n", 609 | "116/116 [==============================] - 0s 64us/step - loss: 0.1005 - acc: 0.3966 - val_loss: 0.2774 - val_acc: 0.3077\n", 610 | "Epoch 188/200\n", 611 | "116/116 [==============================] - 0s 93us/step - loss: 0.1002 - acc: 0.4052 - val_loss: 0.2766 - val_acc: 0.3077\n", 612 | "Epoch 189/200\n", 613 | "116/116 [==============================] - 0s 39us/step - loss: 0.1000 - acc: 0.4052 - val_loss: 0.2758 - val_acc: 0.3077\n", 614 | "Epoch 190/200\n", 615 | "116/116 [==============================] - 0s 50us/step - loss: 0.0998 - acc: 0.4052 - val_loss: 0.2750 - val_acc: 0.3077\n", 616 | "Epoch 191/200\n", 617 | "116/116 [==============================] - 0s 49us/step - loss: 0.0995 - acc: 0.4052 - val_loss: 0.2743 - val_acc: 0.3077\n", 618 | "Epoch 192/200\n", 619 | "116/116 [==============================] - 0s 56us/step - loss: 0.0993 - acc: 0.4052 - val_loss: 0.2736 - val_acc: 0.3077\n", 620 | "Epoch 193/200\n", 621 | "116/116 [==============================] - 0s 50us/step - loss: 0.0991 - acc: 0.4052 - val_loss: 0.2729 - val_acc: 0.3077\n", 622 | "Epoch 194/200\n", 623 | "116/116 [==============================] - 0s 49us/step - loss: 0.0989 - acc: 0.4052 - val_loss: 0.2722 - val_acc: 0.3077\n", 624 | "Epoch 195/200\n", 625 | "116/116 [==============================] - 0s 42us/step - loss: 0.0987 - acc: 0.4052 - val_loss: 0.2714 - val_acc: 0.3077\n", 626 | "Epoch 196/200\n", 627 | "116/116 [==============================] - 0s 48us/step - loss: 0.0985 - acc: 0.4052 - val_loss: 0.2707 - val_acc: 0.3077\n", 628 | "Epoch 197/200\n", 629 | "116/116 [==============================] - 0s 54us/step - loss: 0.0983 - acc: 0.4052 - val_loss: 0.2698 - val_acc: 0.3077\n", 630 | "Epoch 198/200\n", 631 | "116/116 [==============================] - 0s 61us/step - loss: 0.0980 - acc: 0.4052 - val_loss: 0.2690 - val_acc: 0.3077\n", 632 | "Epoch 199/200\n", 633 | "116/116 [==============================] - 0s 51us/step - loss: 0.0978 - acc: 0.4052 - val_loss: 0.2682 - val_acc: 0.3077\n", 634 | "Epoch 200/200\n", 635 | "116/116 [==============================] - 0s 47us/step - loss: 0.0976 - acc: 0.4052 - val_loss: 0.2674 - val_acc: 0.3077\n" 636 | ] 637 | } 638 | ], 639 | "source": [ 640 | "#神经网络训练及结果\n", 641 | "history = model.fit(X, y, epochs =epoch, batch_size = batch_size,verbose=1,validation_split=0.1) #训练模型nb_epoch次" 642 | ] 643 | }, 644 | { 645 | "cell_type": "code", 646 | "execution_count": 76, 647 | "metadata": {}, 648 | "outputs": [ 649 | { 650 | "name": "stdout", 651 | "output_type": "stream", 652 | "text": [ 653 | "(1, 12)\n" 654 | ] 655 | } 656 | ], 657 | "source": [ 658 | "#筛选测试集\n", 659 | "test=pd.read_csv(test_file,header=0) \n", 660 | "test=test['passengers']/scale#选数据集的哪一列\n", 661 | "test=np.reshape(test.values, (1, window))\n", 662 | "print(test.shape)" 663 | ] 664 | }, 665 | { 666 | "cell_type": "code", 667 | "execution_count": 77, 668 | "metadata": {}, 669 | "outputs": [ 670 | { 671 | "name": "stdout", 672 | "output_type": "stream", 673 | "text": [ 674 | "[435.31952 450.9297 521.5045 ]\n" 675 | ] 676 | } 677 | ], 678 | "source": [ 679 | "#实际预测\n", 680 | "predict=model.predict(test)[0,:]*scale\n", 681 | "#储存文件\n", 682 | "(pd.DataFrame(predict)).to_csv(save_file)\n", 683 | "print(predict)" 684 | ] 685 | }, 686 | { 687 | "cell_type": "code", 688 | "execution_count": 78, 689 | "metadata": { 690 | "colab": {}, 691 | "colab_type": "code", 692 | "executionInfo": { 693 | "elapsed": 25217, 694 | "status": "ok", 695 | "timestamp": 1597492094690, 696 | "user": { 697 | "displayName": "Expss Xu", 698 | "photoUrl": "", 699 | "userId": "17480852382145563764" 700 | }, 701 | "user_tz": -480 702 | }, 703 | "id": "Dx57DzoPotj7" 704 | }, 705 | "outputs": [ 706 | { 707 | "data": { 708 | "image/png": "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\n", 709 | "text/plain": [ 710 | "
" 711 | ] 712 | }, 713 | "metadata": {}, 714 | "output_type": "display_data" 715 | } 716 | ], 717 | "source": [ 718 | "#迭代图像\n", 719 | "loss = history.history['loss']\n", 720 | "val_loss = history.history['val_loss']\n", 721 | "epochs_range = range(epoch)\n", 722 | "plt.plot(epochs_range, loss, label='Train Loss')\n", 723 | "plt.plot(epochs_range, val_loss, label='Validation Loss')\n", 724 | "plt.legend(loc='upper right')\n", 725 | "plt.title('Train and Val Loss')\n", 726 | "plt.show()" 727 | ] 728 | }, 729 | { 730 | "cell_type": "code", 731 | "execution_count": 79, 732 | "metadata": {}, 733 | "outputs": [ 734 | { 735 | "data": { 736 | "image/png": "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\n", 737 | "text/plain": [ 738 | "
" 739 | ] 740 | }, 741 | "metadata": {}, 742 | "output_type": "display_data" 743 | } 744 | ], 745 | "source": [ 746 | "\n", 747 | "data_times=np.arange(len(data))\n", 748 | "all_data=np.hstack((data,predict)) \n", 749 | "predicted_times=np.arange(len(all_data))\n", 750 | "plt.figure(figsize=(15, 5))\n", 751 | "plt.axvline(len(data), linestyle=\"dotted\", linewidth=5, color='r')\n", 752 | "predicted_lines = plt.plot(predicted_times, all_data, label=\"prediction\", color=\"b\")\n", 753 | "data_lines = plt.plot(data_times, data, label=\"data\", color=\"k\")\n", 754 | "plt.legend(handles=[data_lines[0], predicted_lines[0]],loc=\"upper left\")\n", 755 | "#为训练,验证,预测数据分别创建图例\n", 756 | "plt.show()" 757 | ] 758 | }, 759 | { 760 | "cell_type": "code", 761 | "execution_count": null, 762 | "metadata": { 763 | "colab": {}, 764 | "colab_type": "code", 765 | "executionInfo": { 766 | "elapsed": 25211, 767 | "status": "ok", 768 | "timestamp": 1597492094691, 769 | "user": { 770 | "displayName": "Expss Xu", 771 | "photoUrl": "", 772 | "userId": "17480852382145563764" 773 | }, 774 | "user_tz": -480 775 | }, 776 | "id": "7kbUZXklotkA" 777 | }, 778 | "outputs": [], 779 | "source": [] 780 | }, 781 | { 782 | "cell_type": "code", 783 | "execution_count": null, 784 | "metadata": {}, 785 | "outputs": [], 786 | "source": [] 787 | }, 788 | { 789 | "cell_type": "code", 790 | "execution_count": null, 791 | "metadata": {}, 792 | "outputs": [], 793 | "source": [] 794 | } 795 | ], 796 | "metadata": { 797 | "anaconda-cloud": {}, 798 | "colab": { 799 | "collapsed_sections": [], 800 | "name": "lstm.ipynb", 801 | "provenance": [] 802 | }, 803 | "kernelspec": { 804 | "display_name": "Python 3", 805 | "language": "python", 806 | "name": "python3" 807 | }, 808 | "language_info": { 809 | "codemirror_mode": { 810 | "name": "ipython", 811 | "version": 3 812 | }, 813 | "file_extension": ".py", 814 | "mimetype": "text/x-python", 815 | "name": "python", 816 | "nbconvert_exporter": "python", 817 | "pygments_lexer": "ipython3", 818 | "version": "3.6.10" 819 | } 820 | }, 821 | "nbformat": 4, 822 | "nbformat_minor": 1 823 | } 824 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LSTM-ANN-Time-Series-Prediction 2 | 使用LSTM、ANN网络进行时间序列的多步预测。一般情况下机器学习算法在进行时间序列预测时采取一步预测的方法。该段代码将其拓展到多步预测的情形。主要改进在于数据的构建。 3 | 实验结果表示预测效果不错。 4 | LSTM and ANN are used to predict the time series. In general, machine learning algorithm takes one-step prediction method in time series prediction. This code extends it to the case of multi-step prediction. The main improvement lies in the construction of data. 5 | -------------------------------------------------------------------------------- /example.csv: -------------------------------------------------------------------------------- 1 | time,passengers 2 | Jan-60,417 3 | Feb-60,391 4 | Mar-60,419 5 | Apr-60,461 6 | May-60,472 7 | Jun-60,535 8 | Jul-60,622 9 | Aug-60,606 10 | Sep-60,508 11 | Oct-60,461 12 | Nov-60,390 13 | Dec-60,432 -------------------------------------------------------------------------------- /international-airline-passengers.csv: -------------------------------------------------------------------------------- 1 | time,passengers 2 | "1949-01",112 3 | "1949-02",118 4 | "1949-03",132 5 | "1949-04",129 6 | "1949-05",121 7 | "1949-06",135 8 | "1949-07",148 9 | "1949-08",148 10 | "1949-09",136 11 | "1949-10",119 12 | "1949-11",104 13 | "1949-12",118 14 | "1950-01",115 15 | "1950-02",126 16 | "1950-03",141 17 | "1950-04",135 18 | "1950-05",125 19 | "1950-06",149 20 | "1950-07",170 21 | "1950-08",170 22 | "1950-09",158 23 | "1950-10",133 24 | "1950-11",114 25 | "1950-12",140 26 | "1951-01",145 27 | "1951-02",150 28 | "1951-03",178 29 | "1951-04",163 30 | "1951-05",172 31 | "1951-06",178 32 | "1951-07",199 33 | "1951-08",199 34 | "1951-09",184 35 | "1951-10",162 36 | "1951-11",146 37 | "1951-12",166 38 | "1952-01",171 39 | "1952-02",180 40 | "1952-03",193 41 | "1952-04",181 42 | "1952-05",183 43 | "1952-06",218 44 | "1952-07",230 45 | "1952-08",242 46 | "1952-09",209 47 | "1952-10",191 48 | "1952-11",172 49 | "1952-12",194 50 | "1953-01",196 51 | "1953-02",196 52 | "1953-03",236 53 | "1953-04",235 54 | "1953-05",229 55 | "1953-06",243 56 | "1953-07",264 57 | "1953-08",272 58 | "1953-09",237 59 | "1953-10",211 60 | "1953-11",180 61 | "1953-12",201 62 | "1954-01",204 63 | "1954-02",188 64 | "1954-03",235 65 | "1954-04",227 66 | "1954-05",234 67 | "1954-06",264 68 | "1954-07",302 69 | "1954-08",293 70 | "1954-09",259 71 | "1954-10",229 72 | "1954-11",203 73 | "1954-12",229 74 | "1955-01",242 75 | "1955-02",233 76 | "1955-03",267 77 | "1955-04",269 78 | "1955-05",270 79 | "1955-06",315 80 | "1955-07",364 81 | "1955-08",347 82 | "1955-09",312 83 | "1955-10",274 84 | "1955-11",237 85 | "1955-12",278 86 | "1956-01",284 87 | "1956-02",277 88 | "1956-03",317 89 | "1956-04",313 90 | "1956-05",318 91 | "1956-06",374 92 | "1956-07",413 93 | "1956-08",405 94 | "1956-09",355 95 | "1956-10",306 96 | "1956-11",271 97 | "1956-12",306 98 | "1957-01",315 99 | "1957-02",301 100 | "1957-03",356 101 | "1957-04",348 102 | "1957-05",355 103 | "1957-06",422 104 | "1957-07",465 105 | "1957-08",467 106 | "1957-09",404 107 | "1957-10",347 108 | "1957-11",305 109 | "1957-12",336 110 | "1958-01",340 111 | "1958-02",318 112 | "1958-03",362 113 | "1958-04",348 114 | "1958-05",363 115 | "1958-06",435 116 | "1958-07",491 117 | "1958-08",505 118 | "1958-09",404 119 | "1958-10",359 120 | "1958-11",310 121 | "1958-12",337 122 | "1959-01",360 123 | "1959-02",342 124 | "1959-03",406 125 | "1959-04",396 126 | "1959-05",420 127 | "1959-06",472 128 | "1959-07",548 129 | "1959-08",559 130 | "1959-09",463 131 | "1959-10",407 132 | "1959-11",362 133 | "1959-12",405 134 | "1960-01",417 135 | "1960-02",391 136 | "1960-03",419 137 | "1960-04",461 138 | "1960-05",472 139 | "1960-06",535 140 | "1960-07",622 141 | "1960-08",606 142 | "1960-09",508 143 | "1960-10",461 144 | "1960-11",390 145 | "1960-12",432 146 | -------------------------------------------------------------------------------- /predict_result_ann.csv: -------------------------------------------------------------------------------- 1 | ,0 2 | 0,435.31952 3 | 1,450.9297 4 | 2,521.5045 5 | -------------------------------------------------------------------------------- /predict_result_lstm.csv: -------------------------------------------------------------------------------- 1 | ,0 2 | 0,380.64984 3 | 1,352.39444 4 | 2,424.23895 5 | 3,395.47702 6 | 4,460.3201 7 | 5,533.6566 8 | 6,535.4953 9 | 7,525.6112 10 | --------------------------------------------------------------------------------