Created
May 19, 2020 13:58
-
-
Save Lay4U/a0a1a32320567c2aab9cd7ec78cf96a5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 46, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 Physical GPUs, 1 Logical GPUs\n", | |
"1899\n", | |
"1589895492.178923\n", | |
"AP시스템 \t 1 / 1899\n", | |
"0.00056052476\n", | |
"\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"C:\\Users\\HL\\anaconda3\\envs\\me\\lib\\site-packages\\ipykernel_launcher.py:125: DeprecationWarning: np.asscalar(a) is deprecated since NumPy v1.16, use a.item() instead\n" | |
] | |
} | |
], | |
"source": [ | |
"# 0. 사용할 패키지 불러오기\n", | |
"import numpy as np\n", | |
"import pandas as pd\n", | |
"# from keras.models import Sequential\n", | |
"# from keras.layers import Dense, LSTM, Dropout, Conv2D, Reshape, TimeDistributed, Flatten, Conv1D,ConvLSTM2D, MaxPooling1D, BatchNormalization, Bidirectional, CuDNNLSTM\n", | |
"# from keras.layers.core import Dense, Activation, Dropout\n", | |
"# from keras import optimizers\n", | |
"from sklearn.preprocessing import MinMaxScaler, StandardScaler\n", | |
"from sklearn.metrics import mean_squared_error\n", | |
"import tensorflow as tf\n", | |
"import matplotlib.pyplot as plt\n", | |
"# from keras import backend as K\n", | |
"from keras.models import load_model\n", | |
"import json\n", | |
"import requests\n", | |
"import os\n", | |
"import pandas as pd\n", | |
"import time\n", | |
"# from keras.backend import tensorflow_backend as K\n", | |
"import sys\n", | |
"\n", | |
"from tensorflow.keras import layers, optimizers, Sequential, metrics\n", | |
"import datetime\n", | |
"\n", | |
"file_name = os.path.basename(sys.argv[0])\n", | |
"core = 1\n", | |
"import tensorflow as tf\n", | |
"\n", | |
"gpus = tf.config.experimental.list_physical_devices('GPU')\n", | |
"if gpus:\n", | |
" try:\n", | |
" # Currently, memory growth needs to be the same across GPUs\n", | |
" for gpu in gpus:\n", | |
" tf.config.experimental.set_memory_growth(gpu, True)\n", | |
" logical_gpus = tf.config.experimental.list_logical_devices('GPU')\n", | |
" print(len(gpus), \"Physical GPUs,\", len(logical_gpus), \"Logical GPUs\")\n", | |
" except RuntimeError as e:\n", | |
" # Memory growth must be set before GPUs have been initialized\n", | |
" print(e)\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"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), :])\n", | |
" dataY.append(signal_data[i + look_back, -1])\n", | |
" return np.array(dataX), np.array(dataY)\n", | |
"\n", | |
"\n", | |
"look_back = 20\n", | |
"forecast = 20\n", | |
"\n", | |
"\n", | |
"path = \"./csv/\"\n", | |
"file_list = os.listdir(path)\n", | |
"file_list_csv = [file for file in file_list if file.endswith(\".csv\")]\n", | |
"\n", | |
"\n", | |
"alist = [file.replace(\".csv\", \"\") for file in file_list_csv ]\n", | |
"size = len(alist)\n", | |
"div = int(size)\n", | |
"# alist = alist[div*(core-1):div*core]\n", | |
"\n", | |
"print(size)\n", | |
"count=0\n", | |
"\n", | |
"print(start)\n", | |
"\n", | |
"\n", | |
"stock = alist[4] \n", | |
"\n", | |
"\n", | |
"\n", | |
"print(stock,'\\t', cc, ' / ', len(alist))\n", | |
"\n", | |
"df = pd.read_csv('./csv/'+stock+'.csv') #this file is stock data including 'Close' value\n", | |
"signal_data = df[[\"close\"]].values.astype('float32')\n", | |
"total_data = df[[\"close\"]].values.astype('float32')\n", | |
"\n", | |
"\n", | |
"\n", | |
"scaler = MinMaxScaler(feature_range=(0, 1))\n", | |
"signal_data = scaler.fit_transform(signal_data)\n", | |
"\n", | |
"train_size = int(len(signal_data) * 0.80)\n", | |
"test_size = len(signal_data) - train_size\n", | |
"\n", | |
"train = signal_data[0:train_size]\n", | |
"test = signal_data[train_size: len(signal_data)]\n", | |
"\n", | |
"x_train, y_train = create_dataset(train, look_back)\n", | |
"x_test, y_test = create_dataset(test, look_back)\n", | |
"\n", | |
"\n", | |
"# K.clear_session()\n", | |
"\n", | |
"model = tf.keras.Sequential([\n", | |
" layers.LSTM(10, input_shape=(None, x_train.shape[2]), dropout=0.2),\n", | |
" layers.Dense(1)\n", | |
"])\n", | |
"\n", | |
"# callback = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=5, verbose=2)\n", | |
"# model.compile(optimizer=optimizers.adam(lr=0.01), metrics='mse')\n", | |
"\n", | |
"model.compile(optimizer='adam', loss='mae')\n", | |
"\n", | |
"history = model.fit(x_train, y_train, epochs=50, batch_size=256, verbose=0)\n", | |
"\n", | |
"p = model.predict(x_test)\n", | |
"mse = mean_squared_error(y_test, p)\n", | |
"print(mse)\n", | |
"print()\n", | |
"\n", | |
"inputs = total_data[len(total_data) - forecast - look_back:]\n", | |
"inputs = scaler.transform(inputs)\n", | |
"X_test = []\n", | |
"for i in range(look_back, inputs.shape[0]):\n", | |
" X_test.append(inputs[i - look_back:i, :])\n", | |
"X_test = np.array(X_test)\n", | |
"predicted = model.predict(X_test)\n", | |
"# predicted_stock_price = scaler.inverse_transform(predicted)\n", | |
"result = max(predicted) - y_test[-1]\n", | |
"result = np.asscalar(result)\n", | |
"\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 47, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"20" | |
] | |
}, | |
"execution_count": 47, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"len(predicted)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 48, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([[0.52040815],\n", | |
" [0.5374149 ],\n", | |
" [0.52721083],\n", | |
" [0.5068027 ],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.52380955],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.5068027 ],\n", | |
" [0.5102041 ],\n", | |
" [0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.47959185],\n", | |
" [0.47278917],\n", | |
" [0.47278917],\n", | |
" [0.47959185],\n", | |
" [0.47619045]], dtype=float32)" | |
] | |
}, | |
"execution_count": 48, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"inputs" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 49, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([[[0.52040815],\n", | |
" [0.5374149 ],\n", | |
" [0.52721083],\n", | |
" [0.5068027 ],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.52380955],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.5068027 ],\n", | |
" [0.5102041 ],\n", | |
" [0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ]],\n", | |
"\n", | |
" [[0.5374149 ],\n", | |
" [0.52721083],\n", | |
" [0.5068027 ],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.52380955],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.5068027 ],\n", | |
" [0.5102041 ],\n", | |
" [0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325]],\n", | |
"\n", | |
" [[0.52721083],\n", | |
" [0.5068027 ],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.52380955],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.5068027 ],\n", | |
" [0.5102041 ],\n", | |
" [0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452]],\n", | |
"\n", | |
" [[0.5068027 ],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.52380955],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.5068027 ],\n", | |
" [0.5102041 ],\n", | |
" [0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045]],\n", | |
"\n", | |
" [[0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.52380955],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.5068027 ],\n", | |
" [0.5102041 ],\n", | |
" [0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777]],\n", | |
"\n", | |
" [[0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.52380955],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.5068027 ],\n", | |
" [0.5102041 ],\n", | |
" [0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325]],\n", | |
"\n", | |
" [[0.52040815],\n", | |
" [0.52380955],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.5068027 ],\n", | |
" [0.5102041 ],\n", | |
" [0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325],\n", | |
" [0.48299325]],\n", | |
"\n", | |
" [[0.52380955],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.5068027 ],\n", | |
" [0.5102041 ],\n", | |
" [0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325],\n", | |
" [0.48299325],\n", | |
" [0.48639452]],\n", | |
"\n", | |
" [[0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.5068027 ],\n", | |
" [0.5102041 ],\n", | |
" [0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.48979592]],\n", | |
"\n", | |
" [[0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.5068027 ],\n", | |
" [0.5102041 ],\n", | |
" [0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48979592]],\n", | |
"\n", | |
" [[0.52040815],\n", | |
" [0.51700675],\n", | |
" [0.5068027 ],\n", | |
" [0.5102041 ],\n", | |
" [0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48979592]],\n", | |
"\n", | |
" [[0.51700675],\n", | |
" [0.5068027 ],\n", | |
" [0.5102041 ],\n", | |
" [0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48639452]],\n", | |
"\n", | |
" [[0.5068027 ],\n", | |
" [0.5102041 ],\n", | |
" [0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592]],\n", | |
"\n", | |
" [[0.5102041 ],\n", | |
" [0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48639452]],\n", | |
"\n", | |
" [[0.51700675],\n", | |
" [0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592]],\n", | |
"\n", | |
" [[0.51700675],\n", | |
" [0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48639452]],\n", | |
"\n", | |
" [[0.52040815],\n", | |
" [0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.47959185]],\n", | |
"\n", | |
" [[0.5136055 ],\n", | |
" [0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.47959185],\n", | |
" [0.47278917]],\n", | |
"\n", | |
" [[0.52040815],\n", | |
" [0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.47959185],\n", | |
" [0.47278917],\n", | |
" [0.47278917]],\n", | |
"\n", | |
" [[0.5102041 ],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.47619045],\n", | |
" [0.46938777],\n", | |
" [0.48299325],\n", | |
" [0.48299325],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.48979592],\n", | |
" [0.48639452],\n", | |
" [0.47959185],\n", | |
" [0.47278917],\n", | |
" [0.47278917],\n", | |
" [0.47959185]]], dtype=float32)" | |
] | |
}, | |
"execution_count": 49, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"X_test" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 50, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# I think this method is wrong\n", | |
"# this method cannot predict next N-step\n", | |
"# because this mtehod doesn't use model.predict function" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.7.7" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment