Skip to content

Instantly share code, notes, and snippets.

@Lay4U
Created May 19, 2020 13:58
Show Gist options
  • Save Lay4U/a0a1a32320567c2aab9cd7ec78cf96a5 to your computer and use it in GitHub Desktop.
Save Lay4U/a0a1a32320567c2aab9cd7ec78cf96a5 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"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