3611 lines
358 KiB
Plaintext
3611 lines
358 KiB
Plaintext
{
|
|
"nbformat": 4,
|
|
"nbformat_minor": 0,
|
|
"metadata": {
|
|
"colab": {
|
|
"provenance": [],
|
|
"toc_visible": true
|
|
},
|
|
"kernelspec": {
|
|
"name": "python3",
|
|
"display_name": "Python 3"
|
|
},
|
|
"language_info": {
|
|
"name": "python"
|
|
}
|
|
},
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"# Import Libraries"
|
|
],
|
|
"metadata": {
|
|
"id": "XTBQCgfi4s_3"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"id": "13IWG7jegtHo"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import time\n",
|
|
"import numpy as np\n",
|
|
"import pandas as pd\n",
|
|
"import seaborn as sns\n",
|
|
"import missingno as msno\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"from tensorflow.keras.models import Sequential\n",
|
|
"from tensorflow.keras.layers import LSTM, Dense, Dropout\n",
|
|
"from tensorflow.keras.callbacks import EarlyStopping\n",
|
|
"from sklearn.preprocessing import MinMaxScaler, StandardScaler\n",
|
|
"from sklearn.model_selection import train_test_split\n",
|
|
"from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"# Reading Dataset"
|
|
],
|
|
"metadata": {
|
|
"id": "_XF8Df9v4v3C"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## ADRO"
|
|
],
|
|
"metadata": {
|
|
"id": "f30_aaa44yhE"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"url_adro = \"https://raw.githubusercontent.com/MIlhamEr/Skripsi/refs/heads/main/dataset/PT%20Adaro%20Energy%20Indonesia%20Tbk_2020-2024.csv\"\n",
|
|
"adro = pd.read_csv(url_adro)\n",
|
|
"adro.head()"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 206
|
|
},
|
|
"id": "CJ69vEFiDxO3",
|
|
"outputId": "2614419c-d979-422c-b6e2-b129a6c64e90"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "execute_result",
|
|
"data": {
|
|
"text/plain": [
|
|
" Date Open High Low Close Adj Close Volume\n",
|
|
"0 2020-01-02 1555.0 1555.0 1490.0 1495.0 835.632202 76612000\n",
|
|
"1 2020-01-03 1460.0 1470.0 1425.0 1465.0 856.372375 117795600\n",
|
|
"2 2020-01-06 1455.0 1515.0 1450.0 1465.0 856.372375 61423200\n",
|
|
"3 2020-01-07 1480.0 1540.0 1460.0 1540.0 900.213867 74336500\n",
|
|
"4 2020-01-08 1530.0 1535.0 1505.0 1505.0 879.754395 55121100"
|
|
],
|
|
"text/html": [
|
|
"\n",
|
|
" <div id=\"df-c004e24d-e22b-4d48-a782-507a8898c7c6\" class=\"colab-df-container\">\n",
|
|
" <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>Open</th>\n",
|
|
" <th>High</th>\n",
|
|
" <th>Low</th>\n",
|
|
" <th>Close</th>\n",
|
|
" <th>Adj Close</th>\n",
|
|
" <th>Volume</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>2020-01-02</td>\n",
|
|
" <td>1555.0</td>\n",
|
|
" <td>1555.0</td>\n",
|
|
" <td>1490.0</td>\n",
|
|
" <td>1495.0</td>\n",
|
|
" <td>835.632202</td>\n",
|
|
" <td>76612000</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>2020-01-03</td>\n",
|
|
" <td>1460.0</td>\n",
|
|
" <td>1470.0</td>\n",
|
|
" <td>1425.0</td>\n",
|
|
" <td>1465.0</td>\n",
|
|
" <td>856.372375</td>\n",
|
|
" <td>117795600</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>2020-01-06</td>\n",
|
|
" <td>1455.0</td>\n",
|
|
" <td>1515.0</td>\n",
|
|
" <td>1450.0</td>\n",
|
|
" <td>1465.0</td>\n",
|
|
" <td>856.372375</td>\n",
|
|
" <td>61423200</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>2020-01-07</td>\n",
|
|
" <td>1480.0</td>\n",
|
|
" <td>1540.0</td>\n",
|
|
" <td>1460.0</td>\n",
|
|
" <td>1540.0</td>\n",
|
|
" <td>900.213867</td>\n",
|
|
" <td>74336500</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>2020-01-08</td>\n",
|
|
" <td>1530.0</td>\n",
|
|
" <td>1535.0</td>\n",
|
|
" <td>1505.0</td>\n",
|
|
" <td>1505.0</td>\n",
|
|
" <td>879.754395</td>\n",
|
|
" <td>55121100</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>\n",
|
|
" <div class=\"colab-df-buttons\">\n",
|
|
"\n",
|
|
" <div class=\"colab-df-container\">\n",
|
|
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-c004e24d-e22b-4d48-a782-507a8898c7c6')\"\n",
|
|
" title=\"Convert this dataframe to an interactive table.\"\n",
|
|
" style=\"display:none;\">\n",
|
|
"\n",
|
|
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
|
|
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
|
|
" </svg>\n",
|
|
" </button>\n",
|
|
"\n",
|
|
" <style>\n",
|
|
" .colab-df-container {\n",
|
|
" display:flex;\n",
|
|
" gap: 12px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-convert {\n",
|
|
" background-color: #E8F0FE;\n",
|
|
" border: none;\n",
|
|
" border-radius: 50%;\n",
|
|
" cursor: pointer;\n",
|
|
" display: none;\n",
|
|
" fill: #1967D2;\n",
|
|
" height: 32px;\n",
|
|
" padding: 0 0 0 0;\n",
|
|
" width: 32px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-convert:hover {\n",
|
|
" background-color: #E2EBFA;\n",
|
|
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
|
" fill: #174EA6;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-buttons div {\n",
|
|
" margin-bottom: 4px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" [theme=dark] .colab-df-convert {\n",
|
|
" background-color: #3B4455;\n",
|
|
" fill: #D2E3FC;\n",
|
|
" }\n",
|
|
"\n",
|
|
" [theme=dark] .colab-df-convert:hover {\n",
|
|
" background-color: #434B5C;\n",
|
|
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
|
|
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
|
|
" fill: #FFFFFF;\n",
|
|
" }\n",
|
|
" </style>\n",
|
|
"\n",
|
|
" <script>\n",
|
|
" const buttonEl =\n",
|
|
" document.querySelector('#df-c004e24d-e22b-4d48-a782-507a8898c7c6 button.colab-df-convert');\n",
|
|
" buttonEl.style.display =\n",
|
|
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
|
"\n",
|
|
" async function convertToInteractive(key) {\n",
|
|
" const element = document.querySelector('#df-c004e24d-e22b-4d48-a782-507a8898c7c6');\n",
|
|
" const dataTable =\n",
|
|
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
|
|
" [key], {});\n",
|
|
" if (!dataTable) return;\n",
|
|
"\n",
|
|
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
|
|
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
|
|
" + ' to learn more about interactive tables.';\n",
|
|
" element.innerHTML = '';\n",
|
|
" dataTable['output_type'] = 'display_data';\n",
|
|
" await google.colab.output.renderOutput(dataTable, element);\n",
|
|
" const docLink = document.createElement('div');\n",
|
|
" docLink.innerHTML = docLinkHtml;\n",
|
|
" element.appendChild(docLink);\n",
|
|
" }\n",
|
|
" </script>\n",
|
|
" </div>\n",
|
|
"\n",
|
|
"\n",
|
|
" <div id=\"df-7741bfef-16db-438f-8320-5159050a7662\">\n",
|
|
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-7741bfef-16db-438f-8320-5159050a7662')\"\n",
|
|
" title=\"Suggest charts\"\n",
|
|
" style=\"display:none;\">\n",
|
|
"\n",
|
|
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
|
|
" width=\"24px\">\n",
|
|
" <g>\n",
|
|
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
|
|
" </g>\n",
|
|
"</svg>\n",
|
|
" </button>\n",
|
|
"\n",
|
|
"<style>\n",
|
|
" .colab-df-quickchart {\n",
|
|
" --bg-color: #E8F0FE;\n",
|
|
" --fill-color: #1967D2;\n",
|
|
" --hover-bg-color: #E2EBFA;\n",
|
|
" --hover-fill-color: #174EA6;\n",
|
|
" --disabled-fill-color: #AAA;\n",
|
|
" --disabled-bg-color: #DDD;\n",
|
|
" }\n",
|
|
"\n",
|
|
" [theme=dark] .colab-df-quickchart {\n",
|
|
" --bg-color: #3B4455;\n",
|
|
" --fill-color: #D2E3FC;\n",
|
|
" --hover-bg-color: #434B5C;\n",
|
|
" --hover-fill-color: #FFFFFF;\n",
|
|
" --disabled-bg-color: #3B4455;\n",
|
|
" --disabled-fill-color: #666;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-quickchart {\n",
|
|
" background-color: var(--bg-color);\n",
|
|
" border: none;\n",
|
|
" border-radius: 50%;\n",
|
|
" cursor: pointer;\n",
|
|
" display: none;\n",
|
|
" fill: var(--fill-color);\n",
|
|
" height: 32px;\n",
|
|
" padding: 0;\n",
|
|
" width: 32px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-quickchart:hover {\n",
|
|
" background-color: var(--hover-bg-color);\n",
|
|
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
|
" fill: var(--button-hover-fill-color);\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-quickchart-complete:disabled,\n",
|
|
" .colab-df-quickchart-complete:disabled:hover {\n",
|
|
" background-color: var(--disabled-bg-color);\n",
|
|
" fill: var(--disabled-fill-color);\n",
|
|
" box-shadow: none;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-spinner {\n",
|
|
" border: 2px solid var(--fill-color);\n",
|
|
" border-color: transparent;\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" animation:\n",
|
|
" spin 1s steps(1) infinite;\n",
|
|
" }\n",
|
|
"\n",
|
|
" @keyframes spin {\n",
|
|
" 0% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" border-left-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 20% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-left-color: var(--fill-color);\n",
|
|
" border-top-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 30% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-left-color: var(--fill-color);\n",
|
|
" border-top-color: var(--fill-color);\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 40% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" border-top-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 60% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 80% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 90% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"\n",
|
|
" <script>\n",
|
|
" async function quickchart(key) {\n",
|
|
" const quickchartButtonEl =\n",
|
|
" document.querySelector('#' + key + ' button');\n",
|
|
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
|
|
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
|
|
" try {\n",
|
|
" const charts = await google.colab.kernel.invokeFunction(\n",
|
|
" 'suggestCharts', [key], {});\n",
|
|
" } catch (error) {\n",
|
|
" console.error('Error during call to suggestCharts:', error);\n",
|
|
" }\n",
|
|
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
|
|
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
|
|
" }\n",
|
|
" (() => {\n",
|
|
" let quickchartButtonEl =\n",
|
|
" document.querySelector('#df-7741bfef-16db-438f-8320-5159050a7662 button');\n",
|
|
" quickchartButtonEl.style.display =\n",
|
|
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
|
" })();\n",
|
|
" </script>\n",
|
|
" </div>\n",
|
|
"\n",
|
|
" </div>\n",
|
|
" </div>\n"
|
|
],
|
|
"application/vnd.google.colaboratory.intrinsic+json": {
|
|
"type": "dataframe",
|
|
"variable_name": "adro",
|
|
"summary": "{\n \"name\": \"adro\",\n \"rows\": 1148,\n \"fields\": [\n {\n \"column\": \"Date\",\n \"properties\": {\n \"dtype\": \"object\",\n \"num_unique_values\": 1148,\n \"samples\": [\n \"2020-09-14\",\n \"2022-03-11\",\n \"2023-07-28\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Open\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 913.246493337149,\n \"min\": 645.0,\n \"max\": 4140.0,\n \"num_unique_values\": 345,\n \"samples\": [\n 3120.0,\n 1670.0,\n 3090.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"High\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 924.8420313199422,\n \"min\": 670.0,\n \"max\": 4250.0,\n \"num_unique_values\": 344,\n \"samples\": [\n 3020.0,\n 1930.0,\n 3320.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Low\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 902.619092508634,\n \"min\": 610.0,\n \"max\": 4080.0,\n \"num_unique_values\": 345,\n \"samples\": [\n 2870.0,\n 1900.0,\n 3120.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Close\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 914.3952655818309,\n \"min\": 645.0,\n \"max\": 4140.0,\n \"num_unique_values\": 357,\n \"samples\": [\n 3290.0,\n 775.0,\n 3640.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Adj Close\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 865.5150705162999,\n \"min\": 377.03759765625,\n \"max\": 3910.0,\n \"num_unique_values\": 614,\n \"samples\": [\n 2913.447509765625,\n 2624.987548828125,\n 776.3223266601562\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Volume\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 68712203,\n \"min\": 0,\n \"max\": 539995200,\n \"num_unique_values\": 1148,\n \"samples\": [\n 57485800,\n 121344700,\n 40850500\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
|
|
}
|
|
},
|
|
"metadata": {},
|
|
"execution_count": 2
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"adro.info()"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "B7p8nU8okoXL",
|
|
"outputId": "5747ace4-8aac-4686-8030-6cac5417d3d5"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"<class 'pandas.core.frame.DataFrame'>\n",
|
|
"RangeIndex: 1148 entries, 0 to 1147\n",
|
|
"Data columns (total 7 columns):\n",
|
|
" # Column Non-Null Count Dtype \n",
|
|
"--- ------ -------------- ----- \n",
|
|
" 0 Date 1148 non-null object \n",
|
|
" 1 Open 1148 non-null float64\n",
|
|
" 2 High 1148 non-null float64\n",
|
|
" 3 Low 1148 non-null float64\n",
|
|
" 4 Close 1148 non-null float64\n",
|
|
" 5 Adj Close 1148 non-null float64\n",
|
|
" 6 Volume 1148 non-null int64 \n",
|
|
"dtypes: float64(5), int64(1), object(1)\n",
|
|
"memory usage: 62.9+ KB\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## DSSA"
|
|
],
|
|
"metadata": {
|
|
"id": "PTWSX4dM5fsn"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"url_dssa = \"https://raw.githubusercontent.com/MIlhamEr/Skripsi/refs/heads/main/dataset/PT%20Dian%20Swastatika%20Sentosa%20Tbk_2020-2024.csv\"\n",
|
|
"dssa = pd.read_csv(url_dssa)\n",
|
|
"dssa.head()"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 206
|
|
},
|
|
"id": "opJl-3DOFICJ",
|
|
"outputId": "191da2e1-68bf-4417-b2bd-858f120e8a28"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "execute_result",
|
|
"data": {
|
|
"text/plain": [
|
|
" Date Open High Low Close Adj Close Volume\n",
|
|
"0 2020-01-02 1360.0 1435.0 1360.0 1435.0 1435.0 5000\n",
|
|
"1 2020-01-03 1435.0 1435.0 1435.0 1435.0 1435.0 0\n",
|
|
"2 2020-01-06 1437.5 1437.5 1435.0 1435.0 1435.0 3000\n",
|
|
"3 2020-01-07 1435.0 1435.0 1435.0 1435.0 1435.0 0\n",
|
|
"4 2020-01-08 1435.0 1435.0 1435.0 1435.0 1435.0 0"
|
|
],
|
|
"text/html": [
|
|
"\n",
|
|
" <div id=\"df-512104df-1b6a-442f-aab0-5e89c87396d7\" class=\"colab-df-container\">\n",
|
|
" <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>Open</th>\n",
|
|
" <th>High</th>\n",
|
|
" <th>Low</th>\n",
|
|
" <th>Close</th>\n",
|
|
" <th>Adj Close</th>\n",
|
|
" <th>Volume</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>2020-01-02</td>\n",
|
|
" <td>1360.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1360.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>5000</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>2020-01-03</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>2020-01-06</td>\n",
|
|
" <td>1437.5</td>\n",
|
|
" <td>1437.5</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>3000</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>2020-01-07</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>2020-01-08</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>1435.0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>\n",
|
|
" <div class=\"colab-df-buttons\">\n",
|
|
"\n",
|
|
" <div class=\"colab-df-container\">\n",
|
|
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-512104df-1b6a-442f-aab0-5e89c87396d7')\"\n",
|
|
" title=\"Convert this dataframe to an interactive table.\"\n",
|
|
" style=\"display:none;\">\n",
|
|
"\n",
|
|
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
|
|
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
|
|
" </svg>\n",
|
|
" </button>\n",
|
|
"\n",
|
|
" <style>\n",
|
|
" .colab-df-container {\n",
|
|
" display:flex;\n",
|
|
" gap: 12px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-convert {\n",
|
|
" background-color: #E8F0FE;\n",
|
|
" border: none;\n",
|
|
" border-radius: 50%;\n",
|
|
" cursor: pointer;\n",
|
|
" display: none;\n",
|
|
" fill: #1967D2;\n",
|
|
" height: 32px;\n",
|
|
" padding: 0 0 0 0;\n",
|
|
" width: 32px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-convert:hover {\n",
|
|
" background-color: #E2EBFA;\n",
|
|
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
|
" fill: #174EA6;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-buttons div {\n",
|
|
" margin-bottom: 4px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" [theme=dark] .colab-df-convert {\n",
|
|
" background-color: #3B4455;\n",
|
|
" fill: #D2E3FC;\n",
|
|
" }\n",
|
|
"\n",
|
|
" [theme=dark] .colab-df-convert:hover {\n",
|
|
" background-color: #434B5C;\n",
|
|
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
|
|
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
|
|
" fill: #FFFFFF;\n",
|
|
" }\n",
|
|
" </style>\n",
|
|
"\n",
|
|
" <script>\n",
|
|
" const buttonEl =\n",
|
|
" document.querySelector('#df-512104df-1b6a-442f-aab0-5e89c87396d7 button.colab-df-convert');\n",
|
|
" buttonEl.style.display =\n",
|
|
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
|
"\n",
|
|
" async function convertToInteractive(key) {\n",
|
|
" const element = document.querySelector('#df-512104df-1b6a-442f-aab0-5e89c87396d7');\n",
|
|
" const dataTable =\n",
|
|
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
|
|
" [key], {});\n",
|
|
" if (!dataTable) return;\n",
|
|
"\n",
|
|
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
|
|
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
|
|
" + ' to learn more about interactive tables.';\n",
|
|
" element.innerHTML = '';\n",
|
|
" dataTable['output_type'] = 'display_data';\n",
|
|
" await google.colab.output.renderOutput(dataTable, element);\n",
|
|
" const docLink = document.createElement('div');\n",
|
|
" docLink.innerHTML = docLinkHtml;\n",
|
|
" element.appendChild(docLink);\n",
|
|
" }\n",
|
|
" </script>\n",
|
|
" </div>\n",
|
|
"\n",
|
|
"\n",
|
|
" <div id=\"df-6c1c60f1-0c70-4492-85c4-f527f74e8624\">\n",
|
|
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-6c1c60f1-0c70-4492-85c4-f527f74e8624')\"\n",
|
|
" title=\"Suggest charts\"\n",
|
|
" style=\"display:none;\">\n",
|
|
"\n",
|
|
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
|
|
" width=\"24px\">\n",
|
|
" <g>\n",
|
|
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
|
|
" </g>\n",
|
|
"</svg>\n",
|
|
" </button>\n",
|
|
"\n",
|
|
"<style>\n",
|
|
" .colab-df-quickchart {\n",
|
|
" --bg-color: #E8F0FE;\n",
|
|
" --fill-color: #1967D2;\n",
|
|
" --hover-bg-color: #E2EBFA;\n",
|
|
" --hover-fill-color: #174EA6;\n",
|
|
" --disabled-fill-color: #AAA;\n",
|
|
" --disabled-bg-color: #DDD;\n",
|
|
" }\n",
|
|
"\n",
|
|
" [theme=dark] .colab-df-quickchart {\n",
|
|
" --bg-color: #3B4455;\n",
|
|
" --fill-color: #D2E3FC;\n",
|
|
" --hover-bg-color: #434B5C;\n",
|
|
" --hover-fill-color: #FFFFFF;\n",
|
|
" --disabled-bg-color: #3B4455;\n",
|
|
" --disabled-fill-color: #666;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-quickchart {\n",
|
|
" background-color: var(--bg-color);\n",
|
|
" border: none;\n",
|
|
" border-radius: 50%;\n",
|
|
" cursor: pointer;\n",
|
|
" display: none;\n",
|
|
" fill: var(--fill-color);\n",
|
|
" height: 32px;\n",
|
|
" padding: 0;\n",
|
|
" width: 32px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-quickchart:hover {\n",
|
|
" background-color: var(--hover-bg-color);\n",
|
|
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
|
" fill: var(--button-hover-fill-color);\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-quickchart-complete:disabled,\n",
|
|
" .colab-df-quickchart-complete:disabled:hover {\n",
|
|
" background-color: var(--disabled-bg-color);\n",
|
|
" fill: var(--disabled-fill-color);\n",
|
|
" box-shadow: none;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-spinner {\n",
|
|
" border: 2px solid var(--fill-color);\n",
|
|
" border-color: transparent;\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" animation:\n",
|
|
" spin 1s steps(1) infinite;\n",
|
|
" }\n",
|
|
"\n",
|
|
" @keyframes spin {\n",
|
|
" 0% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" border-left-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 20% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-left-color: var(--fill-color);\n",
|
|
" border-top-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 30% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-left-color: var(--fill-color);\n",
|
|
" border-top-color: var(--fill-color);\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 40% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" border-top-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 60% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 80% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 90% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"\n",
|
|
" <script>\n",
|
|
" async function quickchart(key) {\n",
|
|
" const quickchartButtonEl =\n",
|
|
" document.querySelector('#' + key + ' button');\n",
|
|
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
|
|
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
|
|
" try {\n",
|
|
" const charts = await google.colab.kernel.invokeFunction(\n",
|
|
" 'suggestCharts', [key], {});\n",
|
|
" } catch (error) {\n",
|
|
" console.error('Error during call to suggestCharts:', error);\n",
|
|
" }\n",
|
|
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
|
|
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
|
|
" }\n",
|
|
" (() => {\n",
|
|
" let quickchartButtonEl =\n",
|
|
" document.querySelector('#df-6c1c60f1-0c70-4492-85c4-f527f74e8624 button');\n",
|
|
" quickchartButtonEl.style.display =\n",
|
|
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
|
" })();\n",
|
|
" </script>\n",
|
|
" </div>\n",
|
|
"\n",
|
|
" </div>\n",
|
|
" </div>\n"
|
|
],
|
|
"application/vnd.google.colaboratory.intrinsic+json": {
|
|
"type": "dataframe",
|
|
"variable_name": "dssa",
|
|
"summary": "{\n \"name\": \"dssa\",\n \"rows\": 1148,\n \"fields\": [\n {\n \"column\": \"Date\",\n \"properties\": {\n \"dtype\": \"object\",\n \"num_unique_values\": 1148,\n \"samples\": [\n \"2020-09-14\",\n \"2022-03-11\",\n \"2023-07-28\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Open\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 8180.650972978378,\n \"min\": 910.0,\n \"max\": 42350.0,\n \"num_unique_values\": 372,\n \"samples\": [\n 28700.0,\n 2227.5,\n 2125.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"High\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 8370.34990700453,\n \"min\": 920.0,\n \"max\": 44775.0,\n \"num_unique_values\": 359,\n \"samples\": [\n 4270.0,\n 1620.0,\n 13050.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Low\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 8089.417253892426,\n \"min\": 910.0,\n \"max\": 41550.0,\n \"num_unique_values\": 363,\n \"samples\": [\n 3815.0,\n 2087.5,\n 2125.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Close\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 8228.663218599353,\n \"min\": 920.0,\n \"max\": 41875.0,\n \"num_unique_values\": 330,\n \"samples\": [\n 1550.0,\n 3392.5,\n 4600.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Adj Close\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 8228.663218599353,\n \"min\": 920.0,\n \"max\": 41875.0,\n \"num_unique_values\": 330,\n \"samples\": [\n 1550.0,\n 3392.5,\n 4600.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Volume\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 510893,\n \"min\": 0,\n \"max\": 12000000,\n \"num_unique_values\": 186,\n \"samples\": [\n 1529000,\n 1100200,\n 1728600\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
|
|
}
|
|
},
|
|
"metadata": {},
|
|
"execution_count": 4
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"dssa.info()"
|
|
],
|
|
"metadata": {
|
|
"id": "4l_a9qfpoCar",
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"outputId": "d182956f-34d6-4b8e-e9c2-b387b6cbb2b2"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"<class 'pandas.core.frame.DataFrame'>\n",
|
|
"RangeIndex: 1148 entries, 0 to 1147\n",
|
|
"Data columns (total 7 columns):\n",
|
|
" # Column Non-Null Count Dtype \n",
|
|
"--- ------ -------------- ----- \n",
|
|
" 0 Date 1148 non-null object \n",
|
|
" 1 Open 1148 non-null float64\n",
|
|
" 2 High 1148 non-null float64\n",
|
|
" 3 Low 1148 non-null float64\n",
|
|
" 4 Close 1148 non-null float64\n",
|
|
" 5 Adj Close 1148 non-null float64\n",
|
|
" 6 Volume 1148 non-null int64 \n",
|
|
"dtypes: float64(5), int64(1), object(1)\n",
|
|
"memory usage: 62.9+ KB\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"# Pre-processing Data"
|
|
],
|
|
"metadata": {
|
|
"id": "GiaxLakO6sVo"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## Normalisasi Data"
|
|
],
|
|
"metadata": {
|
|
"id": "scobtTMV6p5p"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"scaler = MinMaxScaler()"
|
|
],
|
|
"metadata": {
|
|
"id": "AEAlTru7kzRs"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"def normalize_data(df):\n",
|
|
" scaled_df = pd.DataFrame(scaler.fit_transform(df.iloc[:, 1:]), columns=df.columns[1:], index=df.index)\n",
|
|
" return scaled_df"
|
|
],
|
|
"metadata": {
|
|
"id": "sKSDpg6E9BC8"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"adro_norm = adro.copy()\n",
|
|
"adro_norm = adro_norm.drop('Volume', axis=1)\n",
|
|
"adro_norm = normalize_data(adro_norm)\n",
|
|
"adro_norm.head()"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 206
|
|
},
|
|
"id": "SIftpE5Z5_Rh",
|
|
"outputId": "a2fe2b06-bc87-4d6d-d4b4-e0ade5d28713"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "execute_result",
|
|
"data": {
|
|
"text/plain": [
|
|
" Open High Low Close Adj Close\n",
|
|
"0 0.260372 0.247207 0.253602 0.243205 0.129805\n",
|
|
"1 0.233190 0.223464 0.234870 0.234621 0.135675\n",
|
|
"2 0.231760 0.236034 0.242075 0.234621 0.135675\n",
|
|
"3 0.238913 0.243017 0.244957 0.256080 0.148084\n",
|
|
"4 0.253219 0.241620 0.257925 0.246066 0.142293"
|
|
],
|
|
"text/html": [
|
|
"\n",
|
|
" <div id=\"df-9b18945e-6380-4025-a354-70f27df2b4d9\" class=\"colab-df-container\">\n",
|
|
" <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>Open</th>\n",
|
|
" <th>High</th>\n",
|
|
" <th>Low</th>\n",
|
|
" <th>Close</th>\n",
|
|
" <th>Adj Close</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>0.260372</td>\n",
|
|
" <td>0.247207</td>\n",
|
|
" <td>0.253602</td>\n",
|
|
" <td>0.243205</td>\n",
|
|
" <td>0.129805</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>0.233190</td>\n",
|
|
" <td>0.223464</td>\n",
|
|
" <td>0.234870</td>\n",
|
|
" <td>0.234621</td>\n",
|
|
" <td>0.135675</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>0.231760</td>\n",
|
|
" <td>0.236034</td>\n",
|
|
" <td>0.242075</td>\n",
|
|
" <td>0.234621</td>\n",
|
|
" <td>0.135675</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>0.238913</td>\n",
|
|
" <td>0.243017</td>\n",
|
|
" <td>0.244957</td>\n",
|
|
" <td>0.256080</td>\n",
|
|
" <td>0.148084</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>0.253219</td>\n",
|
|
" <td>0.241620</td>\n",
|
|
" <td>0.257925</td>\n",
|
|
" <td>0.246066</td>\n",
|
|
" <td>0.142293</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>\n",
|
|
" <div class=\"colab-df-buttons\">\n",
|
|
"\n",
|
|
" <div class=\"colab-df-container\">\n",
|
|
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-9b18945e-6380-4025-a354-70f27df2b4d9')\"\n",
|
|
" title=\"Convert this dataframe to an interactive table.\"\n",
|
|
" style=\"display:none;\">\n",
|
|
"\n",
|
|
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
|
|
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
|
|
" </svg>\n",
|
|
" </button>\n",
|
|
"\n",
|
|
" <style>\n",
|
|
" .colab-df-container {\n",
|
|
" display:flex;\n",
|
|
" gap: 12px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-convert {\n",
|
|
" background-color: #E8F0FE;\n",
|
|
" border: none;\n",
|
|
" border-radius: 50%;\n",
|
|
" cursor: pointer;\n",
|
|
" display: none;\n",
|
|
" fill: #1967D2;\n",
|
|
" height: 32px;\n",
|
|
" padding: 0 0 0 0;\n",
|
|
" width: 32px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-convert:hover {\n",
|
|
" background-color: #E2EBFA;\n",
|
|
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
|
" fill: #174EA6;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-buttons div {\n",
|
|
" margin-bottom: 4px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" [theme=dark] .colab-df-convert {\n",
|
|
" background-color: #3B4455;\n",
|
|
" fill: #D2E3FC;\n",
|
|
" }\n",
|
|
"\n",
|
|
" [theme=dark] .colab-df-convert:hover {\n",
|
|
" background-color: #434B5C;\n",
|
|
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
|
|
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
|
|
" fill: #FFFFFF;\n",
|
|
" }\n",
|
|
" </style>\n",
|
|
"\n",
|
|
" <script>\n",
|
|
" const buttonEl =\n",
|
|
" document.querySelector('#df-9b18945e-6380-4025-a354-70f27df2b4d9 button.colab-df-convert');\n",
|
|
" buttonEl.style.display =\n",
|
|
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
|
"\n",
|
|
" async function convertToInteractive(key) {\n",
|
|
" const element = document.querySelector('#df-9b18945e-6380-4025-a354-70f27df2b4d9');\n",
|
|
" const dataTable =\n",
|
|
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
|
|
" [key], {});\n",
|
|
" if (!dataTable) return;\n",
|
|
"\n",
|
|
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
|
|
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
|
|
" + ' to learn more about interactive tables.';\n",
|
|
" element.innerHTML = '';\n",
|
|
" dataTable['output_type'] = 'display_data';\n",
|
|
" await google.colab.output.renderOutput(dataTable, element);\n",
|
|
" const docLink = document.createElement('div');\n",
|
|
" docLink.innerHTML = docLinkHtml;\n",
|
|
" element.appendChild(docLink);\n",
|
|
" }\n",
|
|
" </script>\n",
|
|
" </div>\n",
|
|
"\n",
|
|
"\n",
|
|
" <div id=\"df-6ef8e83d-6b7c-45a8-8b5e-126612b0db38\">\n",
|
|
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-6ef8e83d-6b7c-45a8-8b5e-126612b0db38')\"\n",
|
|
" title=\"Suggest charts\"\n",
|
|
" style=\"display:none;\">\n",
|
|
"\n",
|
|
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
|
|
" width=\"24px\">\n",
|
|
" <g>\n",
|
|
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
|
|
" </g>\n",
|
|
"</svg>\n",
|
|
" </button>\n",
|
|
"\n",
|
|
"<style>\n",
|
|
" .colab-df-quickchart {\n",
|
|
" --bg-color: #E8F0FE;\n",
|
|
" --fill-color: #1967D2;\n",
|
|
" --hover-bg-color: #E2EBFA;\n",
|
|
" --hover-fill-color: #174EA6;\n",
|
|
" --disabled-fill-color: #AAA;\n",
|
|
" --disabled-bg-color: #DDD;\n",
|
|
" }\n",
|
|
"\n",
|
|
" [theme=dark] .colab-df-quickchart {\n",
|
|
" --bg-color: #3B4455;\n",
|
|
" --fill-color: #D2E3FC;\n",
|
|
" --hover-bg-color: #434B5C;\n",
|
|
" --hover-fill-color: #FFFFFF;\n",
|
|
" --disabled-bg-color: #3B4455;\n",
|
|
" --disabled-fill-color: #666;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-quickchart {\n",
|
|
" background-color: var(--bg-color);\n",
|
|
" border: none;\n",
|
|
" border-radius: 50%;\n",
|
|
" cursor: pointer;\n",
|
|
" display: none;\n",
|
|
" fill: var(--fill-color);\n",
|
|
" height: 32px;\n",
|
|
" padding: 0;\n",
|
|
" width: 32px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-quickchart:hover {\n",
|
|
" background-color: var(--hover-bg-color);\n",
|
|
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
|
" fill: var(--button-hover-fill-color);\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-quickchart-complete:disabled,\n",
|
|
" .colab-df-quickchart-complete:disabled:hover {\n",
|
|
" background-color: var(--disabled-bg-color);\n",
|
|
" fill: var(--disabled-fill-color);\n",
|
|
" box-shadow: none;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-spinner {\n",
|
|
" border: 2px solid var(--fill-color);\n",
|
|
" border-color: transparent;\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" animation:\n",
|
|
" spin 1s steps(1) infinite;\n",
|
|
" }\n",
|
|
"\n",
|
|
" @keyframes spin {\n",
|
|
" 0% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" border-left-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 20% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-left-color: var(--fill-color);\n",
|
|
" border-top-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 30% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-left-color: var(--fill-color);\n",
|
|
" border-top-color: var(--fill-color);\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 40% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" border-top-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 60% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 80% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 90% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"\n",
|
|
" <script>\n",
|
|
" async function quickchart(key) {\n",
|
|
" const quickchartButtonEl =\n",
|
|
" document.querySelector('#' + key + ' button');\n",
|
|
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
|
|
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
|
|
" try {\n",
|
|
" const charts = await google.colab.kernel.invokeFunction(\n",
|
|
" 'suggestCharts', [key], {});\n",
|
|
" } catch (error) {\n",
|
|
" console.error('Error during call to suggestCharts:', error);\n",
|
|
" }\n",
|
|
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
|
|
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
|
|
" }\n",
|
|
" (() => {\n",
|
|
" let quickchartButtonEl =\n",
|
|
" document.querySelector('#df-6ef8e83d-6b7c-45a8-8b5e-126612b0db38 button');\n",
|
|
" quickchartButtonEl.style.display =\n",
|
|
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
|
" })();\n",
|
|
" </script>\n",
|
|
" </div>\n",
|
|
"\n",
|
|
" </div>\n",
|
|
" </div>\n"
|
|
],
|
|
"application/vnd.google.colaboratory.intrinsic+json": {
|
|
"type": "dataframe",
|
|
"variable_name": "adro_norm",
|
|
"summary": "{\n \"name\": \"adro_norm\",\n \"rows\": 1148,\n \"fields\": [\n {\n \"column\": \"Open\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.2613008564627031,\n \"min\": 0.0,\n \"max\": 1.0000000000000002,\n \"num_unique_values\": 345,\n \"samples\": [\n 0.7081545064377683,\n 0.2932761087267525,\n 0.6995708154506439\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"High\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.2583357629385311,\n \"min\": 0.0,\n \"max\": 0.9999999999999999,\n \"num_unique_values\": 344,\n \"samples\": [\n 0.6564245810055865,\n 0.35195530726256974,\n 0.7402234636871508\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Low\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.2601207759390876,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 345,\n \"samples\": [\n 0.6512968299711817,\n 0.3717579250720462,\n 0.723342939481268\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Close\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.26162954666146787,\n \"min\": 0.0,\n \"max\": 1.0000000000000002,\n \"num_unique_values\": 357,\n \"samples\": [\n 0.7567954220314737,\n 0.037195994277539335,\n 0.8569384835479257\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Adj Close\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.24498281383977363,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 614,\n \"samples\": [\n 0.7179272302549082,\n 0.6362790472042941,\n 0.11301697655741333\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
|
|
}
|
|
},
|
|
"metadata": {},
|
|
"execution_count": 8
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"adro = adro.drop('Volume', axis=1)\n",
|
|
"adro = adro.drop('Date', axis=1)\n",
|
|
"adro.head()"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 206
|
|
},
|
|
"id": "w2qE1QRdPBvi",
|
|
"outputId": "8abda8c3-d4f9-446f-d049-074dcdabaf4a"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "execute_result",
|
|
"data": {
|
|
"text/plain": [
|
|
" Open High Low Close Adj Close\n",
|
|
"0 1555.0 1555.0 1490.0 1495.0 835.632202\n",
|
|
"1 1460.0 1470.0 1425.0 1465.0 856.372375\n",
|
|
"2 1455.0 1515.0 1450.0 1465.0 856.372375\n",
|
|
"3 1480.0 1540.0 1460.0 1540.0 900.213867\n",
|
|
"4 1530.0 1535.0 1505.0 1505.0 879.754395"
|
|
],
|
|
"text/html": [
|
|
"\n",
|
|
" <div id=\"df-be6e6530-fa48-4b0d-9e5f-3565d1587b85\" class=\"colab-df-container\">\n",
|
|
" <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>Open</th>\n",
|
|
" <th>High</th>\n",
|
|
" <th>Low</th>\n",
|
|
" <th>Close</th>\n",
|
|
" <th>Adj Close</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>1555.0</td>\n",
|
|
" <td>1555.0</td>\n",
|
|
" <td>1490.0</td>\n",
|
|
" <td>1495.0</td>\n",
|
|
" <td>835.632202</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>1460.0</td>\n",
|
|
" <td>1470.0</td>\n",
|
|
" <td>1425.0</td>\n",
|
|
" <td>1465.0</td>\n",
|
|
" <td>856.372375</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>1455.0</td>\n",
|
|
" <td>1515.0</td>\n",
|
|
" <td>1450.0</td>\n",
|
|
" <td>1465.0</td>\n",
|
|
" <td>856.372375</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>1480.0</td>\n",
|
|
" <td>1540.0</td>\n",
|
|
" <td>1460.0</td>\n",
|
|
" <td>1540.0</td>\n",
|
|
" <td>900.213867</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>1530.0</td>\n",
|
|
" <td>1535.0</td>\n",
|
|
" <td>1505.0</td>\n",
|
|
" <td>1505.0</td>\n",
|
|
" <td>879.754395</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>\n",
|
|
" <div class=\"colab-df-buttons\">\n",
|
|
"\n",
|
|
" <div class=\"colab-df-container\">\n",
|
|
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-be6e6530-fa48-4b0d-9e5f-3565d1587b85')\"\n",
|
|
" title=\"Convert this dataframe to an interactive table.\"\n",
|
|
" style=\"display:none;\">\n",
|
|
"\n",
|
|
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
|
|
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
|
|
" </svg>\n",
|
|
" </button>\n",
|
|
"\n",
|
|
" <style>\n",
|
|
" .colab-df-container {\n",
|
|
" display:flex;\n",
|
|
" gap: 12px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-convert {\n",
|
|
" background-color: #E8F0FE;\n",
|
|
" border: none;\n",
|
|
" border-radius: 50%;\n",
|
|
" cursor: pointer;\n",
|
|
" display: none;\n",
|
|
" fill: #1967D2;\n",
|
|
" height: 32px;\n",
|
|
" padding: 0 0 0 0;\n",
|
|
" width: 32px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-convert:hover {\n",
|
|
" background-color: #E2EBFA;\n",
|
|
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
|
" fill: #174EA6;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-buttons div {\n",
|
|
" margin-bottom: 4px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" [theme=dark] .colab-df-convert {\n",
|
|
" background-color: #3B4455;\n",
|
|
" fill: #D2E3FC;\n",
|
|
" }\n",
|
|
"\n",
|
|
" [theme=dark] .colab-df-convert:hover {\n",
|
|
" background-color: #434B5C;\n",
|
|
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
|
|
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
|
|
" fill: #FFFFFF;\n",
|
|
" }\n",
|
|
" </style>\n",
|
|
"\n",
|
|
" <script>\n",
|
|
" const buttonEl =\n",
|
|
" document.querySelector('#df-be6e6530-fa48-4b0d-9e5f-3565d1587b85 button.colab-df-convert');\n",
|
|
" buttonEl.style.display =\n",
|
|
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
|
"\n",
|
|
" async function convertToInteractive(key) {\n",
|
|
" const element = document.querySelector('#df-be6e6530-fa48-4b0d-9e5f-3565d1587b85');\n",
|
|
" const dataTable =\n",
|
|
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
|
|
" [key], {});\n",
|
|
" if (!dataTable) return;\n",
|
|
"\n",
|
|
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
|
|
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
|
|
" + ' to learn more about interactive tables.';\n",
|
|
" element.innerHTML = '';\n",
|
|
" dataTable['output_type'] = 'display_data';\n",
|
|
" await google.colab.output.renderOutput(dataTable, element);\n",
|
|
" const docLink = document.createElement('div');\n",
|
|
" docLink.innerHTML = docLinkHtml;\n",
|
|
" element.appendChild(docLink);\n",
|
|
" }\n",
|
|
" </script>\n",
|
|
" </div>\n",
|
|
"\n",
|
|
"\n",
|
|
" <div id=\"df-c4570e13-3f5c-4b83-83be-4783729c8adf\">\n",
|
|
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-c4570e13-3f5c-4b83-83be-4783729c8adf')\"\n",
|
|
" title=\"Suggest charts\"\n",
|
|
" style=\"display:none;\">\n",
|
|
"\n",
|
|
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
|
|
" width=\"24px\">\n",
|
|
" <g>\n",
|
|
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
|
|
" </g>\n",
|
|
"</svg>\n",
|
|
" </button>\n",
|
|
"\n",
|
|
"<style>\n",
|
|
" .colab-df-quickchart {\n",
|
|
" --bg-color: #E8F0FE;\n",
|
|
" --fill-color: #1967D2;\n",
|
|
" --hover-bg-color: #E2EBFA;\n",
|
|
" --hover-fill-color: #174EA6;\n",
|
|
" --disabled-fill-color: #AAA;\n",
|
|
" --disabled-bg-color: #DDD;\n",
|
|
" }\n",
|
|
"\n",
|
|
" [theme=dark] .colab-df-quickchart {\n",
|
|
" --bg-color: #3B4455;\n",
|
|
" --fill-color: #D2E3FC;\n",
|
|
" --hover-bg-color: #434B5C;\n",
|
|
" --hover-fill-color: #FFFFFF;\n",
|
|
" --disabled-bg-color: #3B4455;\n",
|
|
" --disabled-fill-color: #666;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-quickchart {\n",
|
|
" background-color: var(--bg-color);\n",
|
|
" border: none;\n",
|
|
" border-radius: 50%;\n",
|
|
" cursor: pointer;\n",
|
|
" display: none;\n",
|
|
" fill: var(--fill-color);\n",
|
|
" height: 32px;\n",
|
|
" padding: 0;\n",
|
|
" width: 32px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-quickchart:hover {\n",
|
|
" background-color: var(--hover-bg-color);\n",
|
|
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
|
" fill: var(--button-hover-fill-color);\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-quickchart-complete:disabled,\n",
|
|
" .colab-df-quickchart-complete:disabled:hover {\n",
|
|
" background-color: var(--disabled-bg-color);\n",
|
|
" fill: var(--disabled-fill-color);\n",
|
|
" box-shadow: none;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-spinner {\n",
|
|
" border: 2px solid var(--fill-color);\n",
|
|
" border-color: transparent;\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" animation:\n",
|
|
" spin 1s steps(1) infinite;\n",
|
|
" }\n",
|
|
"\n",
|
|
" @keyframes spin {\n",
|
|
" 0% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" border-left-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 20% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-left-color: var(--fill-color);\n",
|
|
" border-top-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 30% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-left-color: var(--fill-color);\n",
|
|
" border-top-color: var(--fill-color);\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 40% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" border-top-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 60% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 80% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 90% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"\n",
|
|
" <script>\n",
|
|
" async function quickchart(key) {\n",
|
|
" const quickchartButtonEl =\n",
|
|
" document.querySelector('#' + key + ' button');\n",
|
|
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
|
|
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
|
|
" try {\n",
|
|
" const charts = await google.colab.kernel.invokeFunction(\n",
|
|
" 'suggestCharts', [key], {});\n",
|
|
" } catch (error) {\n",
|
|
" console.error('Error during call to suggestCharts:', error);\n",
|
|
" }\n",
|
|
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
|
|
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
|
|
" }\n",
|
|
" (() => {\n",
|
|
" let quickchartButtonEl =\n",
|
|
" document.querySelector('#df-c4570e13-3f5c-4b83-83be-4783729c8adf button');\n",
|
|
" quickchartButtonEl.style.display =\n",
|
|
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
|
" })();\n",
|
|
" </script>\n",
|
|
" </div>\n",
|
|
"\n",
|
|
" </div>\n",
|
|
" </div>\n"
|
|
],
|
|
"application/vnd.google.colaboratory.intrinsic+json": {
|
|
"type": "dataframe",
|
|
"variable_name": "adro",
|
|
"summary": "{\n \"name\": \"adro\",\n \"rows\": 1148,\n \"fields\": [\n {\n \"column\": \"Open\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 913.246493337149,\n \"min\": 645.0,\n \"max\": 4140.0,\n \"num_unique_values\": 345,\n \"samples\": [\n 3120.0,\n 1670.0,\n 3090.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"High\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 924.8420313199422,\n \"min\": 670.0,\n \"max\": 4250.0,\n \"num_unique_values\": 344,\n \"samples\": [\n 3020.0,\n 1930.0,\n 3320.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Low\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 902.619092508634,\n \"min\": 610.0,\n \"max\": 4080.0,\n \"num_unique_values\": 345,\n \"samples\": [\n 2870.0,\n 1900.0,\n 3120.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Close\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 914.3952655818309,\n \"min\": 645.0,\n \"max\": 4140.0,\n \"num_unique_values\": 357,\n \"samples\": [\n 3290.0,\n 775.0,\n 3640.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Adj Close\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 865.5150705162999,\n \"min\": 377.03759765625,\n \"max\": 3910.0,\n \"num_unique_values\": 614,\n \"samples\": [\n 2913.447509765625,\n 2624.987548828125,\n 776.3223266601562\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
|
|
}
|
|
},
|
|
"metadata": {},
|
|
"execution_count": 9
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"dssa_norm = dssa.copy()\n",
|
|
"dssa_norm = dssa_norm.drop('Volume', axis=1)\n",
|
|
"dssa_norm = normalize_data(dssa_norm)\n",
|
|
"dssa_norm.head()"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 206
|
|
},
|
|
"id": "bFqa6kGj6Bn4",
|
|
"outputId": "8ea4e3e0-1d0e-4a9e-e10e-e4c5a529e575"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "execute_result",
|
|
"data": {
|
|
"text/plain": [
|
|
" Open High Low Close Adj Close\n",
|
|
"0 0.010859 0.011743 0.011073 0.012575 0.012575\n",
|
|
"1 0.012669 0.011743 0.012918 0.012575 0.012575\n",
|
|
"2 0.012729 0.011800 0.012918 0.012575 0.012575\n",
|
|
"3 0.012669 0.011743 0.012918 0.012575 0.012575\n",
|
|
"4 0.012669 0.011743 0.012918 0.012575 0.012575"
|
|
],
|
|
"text/html": [
|
|
"\n",
|
|
" <div id=\"df-9d00ed60-2204-4efb-99c5-f84dafff9a4e\" class=\"colab-df-container\">\n",
|
|
" <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>Open</th>\n",
|
|
" <th>High</th>\n",
|
|
" <th>Low</th>\n",
|
|
" <th>Close</th>\n",
|
|
" <th>Adj Close</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>0.010859</td>\n",
|
|
" <td>0.011743</td>\n",
|
|
" <td>0.011073</td>\n",
|
|
" <td>0.012575</td>\n",
|
|
" <td>0.012575</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>0.012669</td>\n",
|
|
" <td>0.011743</td>\n",
|
|
" <td>0.012918</td>\n",
|
|
" <td>0.012575</td>\n",
|
|
" <td>0.012575</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>0.012729</td>\n",
|
|
" <td>0.011800</td>\n",
|
|
" <td>0.012918</td>\n",
|
|
" <td>0.012575</td>\n",
|
|
" <td>0.012575</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>0.012669</td>\n",
|
|
" <td>0.011743</td>\n",
|
|
" <td>0.012918</td>\n",
|
|
" <td>0.012575</td>\n",
|
|
" <td>0.012575</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>0.012669</td>\n",
|
|
" <td>0.011743</td>\n",
|
|
" <td>0.012918</td>\n",
|
|
" <td>0.012575</td>\n",
|
|
" <td>0.012575</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>\n",
|
|
" <div class=\"colab-df-buttons\">\n",
|
|
"\n",
|
|
" <div class=\"colab-df-container\">\n",
|
|
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-9d00ed60-2204-4efb-99c5-f84dafff9a4e')\"\n",
|
|
" title=\"Convert this dataframe to an interactive table.\"\n",
|
|
" style=\"display:none;\">\n",
|
|
"\n",
|
|
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
|
|
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
|
|
" </svg>\n",
|
|
" </button>\n",
|
|
"\n",
|
|
" <style>\n",
|
|
" .colab-df-container {\n",
|
|
" display:flex;\n",
|
|
" gap: 12px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-convert {\n",
|
|
" background-color: #E8F0FE;\n",
|
|
" border: none;\n",
|
|
" border-radius: 50%;\n",
|
|
" cursor: pointer;\n",
|
|
" display: none;\n",
|
|
" fill: #1967D2;\n",
|
|
" height: 32px;\n",
|
|
" padding: 0 0 0 0;\n",
|
|
" width: 32px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-convert:hover {\n",
|
|
" background-color: #E2EBFA;\n",
|
|
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
|
" fill: #174EA6;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-buttons div {\n",
|
|
" margin-bottom: 4px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" [theme=dark] .colab-df-convert {\n",
|
|
" background-color: #3B4455;\n",
|
|
" fill: #D2E3FC;\n",
|
|
" }\n",
|
|
"\n",
|
|
" [theme=dark] .colab-df-convert:hover {\n",
|
|
" background-color: #434B5C;\n",
|
|
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
|
|
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
|
|
" fill: #FFFFFF;\n",
|
|
" }\n",
|
|
" </style>\n",
|
|
"\n",
|
|
" <script>\n",
|
|
" const buttonEl =\n",
|
|
" document.querySelector('#df-9d00ed60-2204-4efb-99c5-f84dafff9a4e button.colab-df-convert');\n",
|
|
" buttonEl.style.display =\n",
|
|
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
|
"\n",
|
|
" async function convertToInteractive(key) {\n",
|
|
" const element = document.querySelector('#df-9d00ed60-2204-4efb-99c5-f84dafff9a4e');\n",
|
|
" const dataTable =\n",
|
|
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
|
|
" [key], {});\n",
|
|
" if (!dataTable) return;\n",
|
|
"\n",
|
|
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
|
|
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
|
|
" + ' to learn more about interactive tables.';\n",
|
|
" element.innerHTML = '';\n",
|
|
" dataTable['output_type'] = 'display_data';\n",
|
|
" await google.colab.output.renderOutput(dataTable, element);\n",
|
|
" const docLink = document.createElement('div');\n",
|
|
" docLink.innerHTML = docLinkHtml;\n",
|
|
" element.appendChild(docLink);\n",
|
|
" }\n",
|
|
" </script>\n",
|
|
" </div>\n",
|
|
"\n",
|
|
"\n",
|
|
" <div id=\"df-26078ec6-fd7c-4e59-bc3f-20d0e77f1764\">\n",
|
|
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-26078ec6-fd7c-4e59-bc3f-20d0e77f1764')\"\n",
|
|
" title=\"Suggest charts\"\n",
|
|
" style=\"display:none;\">\n",
|
|
"\n",
|
|
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
|
|
" width=\"24px\">\n",
|
|
" <g>\n",
|
|
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
|
|
" </g>\n",
|
|
"</svg>\n",
|
|
" </button>\n",
|
|
"\n",
|
|
"<style>\n",
|
|
" .colab-df-quickchart {\n",
|
|
" --bg-color: #E8F0FE;\n",
|
|
" --fill-color: #1967D2;\n",
|
|
" --hover-bg-color: #E2EBFA;\n",
|
|
" --hover-fill-color: #174EA6;\n",
|
|
" --disabled-fill-color: #AAA;\n",
|
|
" --disabled-bg-color: #DDD;\n",
|
|
" }\n",
|
|
"\n",
|
|
" [theme=dark] .colab-df-quickchart {\n",
|
|
" --bg-color: #3B4455;\n",
|
|
" --fill-color: #D2E3FC;\n",
|
|
" --hover-bg-color: #434B5C;\n",
|
|
" --hover-fill-color: #FFFFFF;\n",
|
|
" --disabled-bg-color: #3B4455;\n",
|
|
" --disabled-fill-color: #666;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-quickchart {\n",
|
|
" background-color: var(--bg-color);\n",
|
|
" border: none;\n",
|
|
" border-radius: 50%;\n",
|
|
" cursor: pointer;\n",
|
|
" display: none;\n",
|
|
" fill: var(--fill-color);\n",
|
|
" height: 32px;\n",
|
|
" padding: 0;\n",
|
|
" width: 32px;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-quickchart:hover {\n",
|
|
" background-color: var(--hover-bg-color);\n",
|
|
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
|
" fill: var(--button-hover-fill-color);\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-quickchart-complete:disabled,\n",
|
|
" .colab-df-quickchart-complete:disabled:hover {\n",
|
|
" background-color: var(--disabled-bg-color);\n",
|
|
" fill: var(--disabled-fill-color);\n",
|
|
" box-shadow: none;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .colab-df-spinner {\n",
|
|
" border: 2px solid var(--fill-color);\n",
|
|
" border-color: transparent;\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" animation:\n",
|
|
" spin 1s steps(1) infinite;\n",
|
|
" }\n",
|
|
"\n",
|
|
" @keyframes spin {\n",
|
|
" 0% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" border-left-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 20% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-left-color: var(--fill-color);\n",
|
|
" border-top-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 30% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-left-color: var(--fill-color);\n",
|
|
" border-top-color: var(--fill-color);\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 40% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" border-top-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 60% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 80% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-right-color: var(--fill-color);\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" 90% {\n",
|
|
" border-color: transparent;\n",
|
|
" border-bottom-color: var(--fill-color);\n",
|
|
" }\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"\n",
|
|
" <script>\n",
|
|
" async function quickchart(key) {\n",
|
|
" const quickchartButtonEl =\n",
|
|
" document.querySelector('#' + key + ' button');\n",
|
|
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
|
|
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
|
|
" try {\n",
|
|
" const charts = await google.colab.kernel.invokeFunction(\n",
|
|
" 'suggestCharts', [key], {});\n",
|
|
" } catch (error) {\n",
|
|
" console.error('Error during call to suggestCharts:', error);\n",
|
|
" }\n",
|
|
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
|
|
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
|
|
" }\n",
|
|
" (() => {\n",
|
|
" let quickchartButtonEl =\n",
|
|
" document.querySelector('#df-26078ec6-fd7c-4e59-bc3f-20d0e77f1764 button');\n",
|
|
" quickchartButtonEl.style.display =\n",
|
|
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
|
" })();\n",
|
|
" </script>\n",
|
|
" </div>\n",
|
|
"\n",
|
|
" </div>\n",
|
|
" </div>\n"
|
|
],
|
|
"application/vnd.google.colaboratory.intrinsic+json": {
|
|
"type": "dataframe",
|
|
"variable_name": "dssa_norm",
|
|
"summary": "{\n \"name\": \"dssa_norm\",\n \"rows\": 1148,\n \"fields\": [\n {\n \"column\": \"Open\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.19740953120121557,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 372,\n \"samples\": [\n 0.6706081081081081,\n 0.03179295366795366,\n 0.02931949806949807\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"High\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.1908642094859088,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 359,\n \"samples\": [\n 0.07638809713829667,\n 0.01596169193934557,\n 0.27659331889180255\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Low\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.19905062140483315,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 363,\n \"samples\": [\n 0.07148129921259842,\n 0.028973917322834646,\n 0.029896653543307086\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Close\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.20091962443167757,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 330,\n \"samples\": [\n 0.015382737150531074,\n 0.06037113905506044,\n 0.08985471859357833\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Adj Close\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.20091962443167757,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 330,\n \"samples\": [\n 0.015382737150531074,\n 0.06037113905506044,\n 0.08985471859357833\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
|
|
}
|
|
},
|
|
"metadata": {},
|
|
"execution_count": 10
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## Windowing (Time Series Data)"
|
|
],
|
|
"metadata": {
|
|
"id": "Mt0Pcgzwu5Zs"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"# Bagian Baru"
|
|
],
|
|
"metadata": {
|
|
"id": "w_3dti2a6Ntc"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"Data look back yaitu adalah data yang biasanya dipakai untuk tipe time series, data ini menjadikan nilai lookback+1 sebagai nilai prediksi , dan data lookbacknya sebagai fitur.Ini berlaku untuk seluruh data, contoh penggambarannya seperti pada gambar diatas"
|
|
],
|
|
"metadata": {
|
|
"id": "J-_ZgIAgznVd"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"def prepare_data(df, time_step):\n",
|
|
" X, y = [], []\n",
|
|
" for i in range(len(df)-time_step):\n",
|
|
" t = []\n",
|
|
" for j in range(time_step):\n",
|
|
" t.append(df.iloc[i + j].values) # Use all columns for features\n",
|
|
" X.append(t)\n",
|
|
" y.append(df['High'][i + time_step]) # Predict High price\n",
|
|
" return np.array(X), np.array(y)"
|
|
],
|
|
"metadata": {
|
|
"id": "SGATnJPNudrF"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"time_step = 7\n",
|
|
"X_adro, y_adro = prepare_data(adro_norm, time_step)"
|
|
],
|
|
"metadata": {
|
|
"id": "FKhvyz5WugaA"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"print(X_adro[1])\n",
|
|
"print(y_adro[1])"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "3BVbHH-ew4dm",
|
|
"outputId": "55160db0-8caf-4116-f6d5-79e5565c8cab"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"[[0.23319027 0.22346369 0.23487032 0.23462089 0.13567503]\n",
|
|
" [0.23175966 0.23603352 0.24207493 0.23462089 0.13567503]\n",
|
|
" [0.23891273 0.24301676 0.24495677 0.25608011 0.1480843 ]\n",
|
|
" [0.25321888 0.24162011 0.25792507 0.24606581 0.14229328]\n",
|
|
" [0.25035765 0.23882682 0.24927954 0.24320458 0.14063873]\n",
|
|
" [0.25035765 0.25 0.26080692 0.25894134 0.14973887]\n",
|
|
" [0.26895565 0.25837989 0.27233429 0.26323319 0.15222076]]\n",
|
|
"0.2555865921787709\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"X_adro.shape, y_adro.shape"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "C_07IBA047Yh",
|
|
"outputId": "8dec3480-829c-4b35-efd3-329903c951d0"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "execute_result",
|
|
"data": {
|
|
"text/plain": [
|
|
"((1141, 7, 5), (1141,))"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"execution_count": 14
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"X_dssa, y_dssa = prepare_data(dssa_norm, time_step)"
|
|
],
|
|
"metadata": {
|
|
"id": "9MawPQRzul5d"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## Split data into training and testing sets"
|
|
],
|
|
"metadata": {
|
|
"id": "pTzWLSzTu9gX"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"X_train_adro, X_test_adro, y_train_adro, y_test_adro = train_test_split(X_adro, y_adro, test_size=0.2, random_state=42, shuffle=False)\n",
|
|
"X_train_dssa, X_test_dssa, y_train_dssa, y_test_dssa = train_test_split(X_dssa, y_dssa, test_size=0.2, random_state=42, shuffle=False)"
|
|
],
|
|
"metadata": {
|
|
"id": "f3t130E5uoI1"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"X_train_adro.shape, X_test_adro.shape, y_train_adro.shape, y_test_adro.shape"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "xNNB6-e9e3V9",
|
|
"outputId": "e784540a-96b7-44cc-a519-5b02fa6fa012"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "execute_result",
|
|
"data": {
|
|
"text/plain": [
|
|
"((912, 7, 5), (229, 7, 5), (912,), (229,))"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"execution_count": 17
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"# Data Mining"
|
|
],
|
|
"metadata": {
|
|
"id": "n0BKrKtoo8Cb"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"def create_lstm_model(units):\n",
|
|
" model = Sequential()\n",
|
|
" model.add(LSTM(units=units, return_sequences=True, input_shape=(X_train_adro.shape[1], X_train_adro.shape[2])))\n",
|
|
" model.add(Dropout(0.2))\n",
|
|
" model.add(LSTM(units=units, return_sequences=False))\n",
|
|
" model.add(Dropout(0.2))\n",
|
|
" model.add(Dense(units=1)) # Output layer for single prediction (predicted stock price)\n",
|
|
" model.compile(optimizer='adam', loss='mean_squared_error')\n",
|
|
" return model"
|
|
],
|
|
"metadata": {
|
|
"id": "bProaTPtvI4l"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## Bobot LSTM"
|
|
],
|
|
"metadata": {
|
|
"id": "rIEZVKoRtq8H"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"# Create model\n",
|
|
"lstm_model = create_lstm_model(50) # Example: 50 LSTM units"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "aT5t4Cq0aano",
|
|
"outputId": "a17dd5b2-db0a-40ac-e115-4df8a11439aa"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stderr",
|
|
"text": [
|
|
"/usr/local/lib/python3.11/dist-packages/keras/src/layers/rnn/rnn.py:200: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
|
|
" super().__init__(**kwargs)\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"layer = lstm_model.layers[0] # Ambil hanya layer pertama\n",
|
|
"if isinstance(layer, LSTM):\n",
|
|
" weights = layer.get_weights()\n",
|
|
" # W: Input weights, U: Recurrent weights, b: Bias\n",
|
|
" W, U, b = weights[0], weights[1], weights[2]\n",
|
|
" units = U.shape[0] # Jumlah unit LSTM\n",
|
|
" columns = [\"Open\", \"High\", \"Low\", \"Close\", \"Adj Close\"]\n",
|
|
" num_features = len(columns)\n",
|
|
"\n",
|
|
" # Memisahkan bobot untuk setiap gate\n",
|
|
" W_f, W_i, W_c, W_o = np.split(W, 4, axis=1)\n",
|
|
" U_f, U_i, U_c, U_o = np.split(U, 4, axis=1)\n",
|
|
" b_f, b_i, b_c, b_o = np.split(b, 4, axis=0)\n",
|
|
"\n",
|
|
" print(\"LSTM Layer 1 Weights Analysis:\")\n",
|
|
" for i in range(num_features): # Iterasi sesuai jumlah fitur\n",
|
|
" print(f\"Feature: {columns[i]}\")\n",
|
|
" print(f\" Forget Gate W_f[{i}, 0]: {W_f[i, 0]}\")\n",
|
|
" print(f\" Input Gate W_i[{i}, 0]: {W_i[i, 0]}\")\n",
|
|
" print(f\" Cell State W_c[{i}, 0]: {W_c[i, 0]}\")\n",
|
|
" print(f\" Output Gate W_o[{i}, 0]: {W_o[i, 0]}\")\n",
|
|
" print(f\" Forget Gate U_f[{i}, 0]: {U_f[i, 0]}\")\n",
|
|
" print(f\" Input Gate U_i[{i}, 0]: {U_i[i, 0]}\")\n",
|
|
" print(f\" Cell State U_c[{i}, 0]: {U_c[i, 0]}\")\n",
|
|
" print(f\" Output Gate U_o[{i}, 0]: {U_o[i, 0]}\")\n",
|
|
" print(f\" Forget Gate b_f[{i}]: {b_f[i]}\")\n",
|
|
" print(f\" Input Gate b_i[{i}]: {b_i[i]}\")\n",
|
|
" print(f\" Cell State b_c[{i}]: {b_c[i]}\")\n",
|
|
" print(f\" Output Gate b_o[{i}]: {b_o[i]}\")\n",
|
|
" print(\"====\")"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "WO6adjDEhB6F",
|
|
"outputId": "ee892ce6-40aa-4bec-f6f8-e212e10eaa99"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"LSTM Layer 1 Weights Analysis:\n",
|
|
"Feature: Open\n",
|
|
" Forget Gate W_f[0, 0]: -0.04256738722324371\n",
|
|
" Input Gate W_i[0, 0]: -0.010287865996360779\n",
|
|
" Cell State W_c[0, 0]: -0.05227087438106537\n",
|
|
" Output Gate W_o[0, 0]: -0.08412709832191467\n",
|
|
" Forget Gate U_f[0, 0]: 0.04162132740020752\n",
|
|
" Input Gate U_i[0, 0]: -0.012287689372897148\n",
|
|
" Cell State U_c[0, 0]: -0.011030183173716068\n",
|
|
" Output Gate U_o[0, 0]: 0.03395417705178261\n",
|
|
" Forget Gate b_f[0]: 0.0\n",
|
|
" Input Gate b_i[0]: 1.0\n",
|
|
" Cell State b_c[0]: 0.0\n",
|
|
" Output Gate b_o[0]: 0.0\n",
|
|
"====\n",
|
|
"Feature: High\n",
|
|
" Forget Gate W_f[1, 0]: 0.06724417209625244\n",
|
|
" Input Gate W_i[1, 0]: 0.0061102211475372314\n",
|
|
" Cell State W_c[1, 0]: 0.16968616843223572\n",
|
|
" Output Gate W_o[1, 0]: 0.05730287730693817\n",
|
|
" Forget Gate U_f[1, 0]: 0.09096574783325195\n",
|
|
" Input Gate U_i[1, 0]: 0.009209300391376019\n",
|
|
" Cell State U_c[1, 0]: 0.04923269897699356\n",
|
|
" Output Gate U_o[1, 0]: -0.08389423787593842\n",
|
|
" Forget Gate b_f[1]: 0.0\n",
|
|
" Input Gate b_i[1]: 1.0\n",
|
|
" Cell State b_c[1]: 0.0\n",
|
|
" Output Gate b_o[1]: 0.0\n",
|
|
"====\n",
|
|
"Feature: Low\n",
|
|
" Forget Gate W_f[2, 0]: -0.07467328011989594\n",
|
|
" Input Gate W_i[2, 0]: 0.07021500170230865\n",
|
|
" Cell State W_c[2, 0]: 0.1201578676700592\n",
|
|
" Output Gate W_o[2, 0]: -0.13118976354599\n",
|
|
" Forget Gate U_f[2, 0]: 0.07825936377048492\n",
|
|
" Input Gate U_i[2, 0]: 0.07037021964788437\n",
|
|
" Cell State U_c[2, 0]: 0.014703350141644478\n",
|
|
" Output Gate U_o[2, 0]: -0.10391176491975784\n",
|
|
" Forget Gate b_f[2]: 0.0\n",
|
|
" Input Gate b_i[2]: 1.0\n",
|
|
" Cell State b_c[2]: 0.0\n",
|
|
" Output Gate b_o[2]: 0.0\n",
|
|
"====\n",
|
|
"Feature: Close\n",
|
|
" Forget Gate W_f[3, 0]: -0.08179786801338196\n",
|
|
" Input Gate W_i[3, 0]: 0.1663205325603485\n",
|
|
" Cell State W_c[3, 0]: 0.09247386455535889\n",
|
|
" Output Gate W_o[3, 0]: 0.09769025444984436\n",
|
|
" Forget Gate U_f[3, 0]: 0.10877078026533127\n",
|
|
" Input Gate U_i[3, 0]: -0.07621479034423828\n",
|
|
" Cell State U_c[3, 0]: 0.024317285045981407\n",
|
|
" Output Gate U_o[3, 0]: 0.020522702485322952\n",
|
|
" Forget Gate b_f[3]: 0.0\n",
|
|
" Input Gate b_i[3]: 1.0\n",
|
|
" Cell State b_c[3]: 0.0\n",
|
|
" Output Gate b_o[3]: 0.0\n",
|
|
"====\n",
|
|
"Feature: Adj Close\n",
|
|
" Forget Gate W_f[4, 0]: 0.13921821117401123\n",
|
|
" Input Gate W_i[4, 0]: 0.1498813033103943\n",
|
|
" Cell State W_c[4, 0]: -0.11748667061328888\n",
|
|
" Output Gate W_o[4, 0]: 0.05497296154499054\n",
|
|
" Forget Gate U_f[4, 0]: -0.11227526515722275\n",
|
|
" Input Gate U_i[4, 0]: 0.06800103187561035\n",
|
|
" Cell State U_c[4, 0]: 0.0842202827334404\n",
|
|
" Output Gate U_o[4, 0]: 0.06456313282251358\n",
|
|
" Forget Gate b_f[4]: 0.0\n",
|
|
" Input Gate b_i[4]: 1.0\n",
|
|
" Cell State b_c[4]: 0.0\n",
|
|
" Output Gate b_o[4]: 0.0\n",
|
|
"====\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## ADRO"
|
|
],
|
|
"metadata": {
|
|
"id": "LHohXfRvvOQi"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"model_adro = create_lstm_model(100)\n",
|
|
"\n",
|
|
"start_time = time.time()\n",
|
|
"model_adro.fit(X_train_adro, y_train_adro, epochs=100, batch_size=32, validation_split=0.1)\n",
|
|
"\n",
|
|
"end_time = time.time()\n",
|
|
"elapsed_time = end_time - start_time\n",
|
|
"\n",
|
|
"print(f\"Waktu training: {elapsed_time:.2f} detik\")"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "LOSVVOqEvLF7",
|
|
"outputId": "ba4313f8-c371-406d-ea24-137da451ef29"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"Epoch 1/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 31ms/step - loss: 0.0634 - val_loss: 0.0047\n",
|
|
"Epoch 2/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - loss: 0.0045 - val_loss: 0.0021\n",
|
|
"Epoch 3/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - loss: 0.0025 - val_loss: 0.0016\n",
|
|
"Epoch 4/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - loss: 0.0025 - val_loss: 8.3777e-04\n",
|
|
"Epoch 5/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - loss: 0.0023 - val_loss: 0.0014\n",
|
|
"Epoch 6/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0026 - val_loss: 8.2497e-04\n",
|
|
"Epoch 7/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0024 - val_loss: 0.0016\n",
|
|
"Epoch 8/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0022 - val_loss: 0.0010\n",
|
|
"Epoch 9/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 15ms/step - loss: 0.0024 - val_loss: 0.0012\n",
|
|
"Epoch 10/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0020 - val_loss: 0.0011\n",
|
|
"Epoch 11/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0019 - val_loss: 7.9596e-04\n",
|
|
"Epoch 12/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0028 - val_loss: 0.0013\n",
|
|
"Epoch 13/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0025 - val_loss: 0.0021\n",
|
|
"Epoch 14/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0023 - val_loss: 7.8227e-04\n",
|
|
"Epoch 15/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 17ms/step - loss: 0.0023 - val_loss: 0.0011\n",
|
|
"Epoch 16/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - loss: 0.0020 - val_loss: 0.0011\n",
|
|
"Epoch 17/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - loss: 0.0023 - val_loss: 0.0012\n",
|
|
"Epoch 18/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - loss: 0.0018 - val_loss: 6.9405e-04\n",
|
|
"Epoch 19/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - loss: 0.0021 - val_loss: 0.0010\n",
|
|
"Epoch 20/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0022 - val_loss: 0.0014\n",
|
|
"Epoch 21/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0019 - val_loss: 0.0012\n",
|
|
"Epoch 22/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0020 - val_loss: 6.5237e-04\n",
|
|
"Epoch 23/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0020 - val_loss: 6.5597e-04\n",
|
|
"Epoch 24/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0019 - val_loss: 6.5076e-04\n",
|
|
"Epoch 25/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0017 - val_loss: 0.0014\n",
|
|
"Epoch 26/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0019 - val_loss: 6.7983e-04\n",
|
|
"Epoch 27/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - loss: 0.0019 - val_loss: 6.8607e-04\n",
|
|
"Epoch 28/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0021 - val_loss: 6.1122e-04\n",
|
|
"Epoch 29/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0019 - val_loss: 7.4124e-04\n",
|
|
"Epoch 30/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0018 - val_loss: 0.0011\n",
|
|
"Epoch 31/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0017 - val_loss: 7.7461e-04\n",
|
|
"Epoch 32/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0017 - val_loss: 5.9862e-04\n",
|
|
"Epoch 33/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0023 - val_loss: 6.0562e-04\n",
|
|
"Epoch 34/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0016 - val_loss: 6.5603e-04\n",
|
|
"Epoch 35/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0019 - val_loss: 6.9457e-04\n",
|
|
"Epoch 36/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0016 - val_loss: 5.3735e-04\n",
|
|
"Epoch 37/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - loss: 0.0017 - val_loss: 0.0011\n",
|
|
"Epoch 38/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0016 - val_loss: 0.0012\n",
|
|
"Epoch 39/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 15ms/step - loss: 0.0017 - val_loss: 0.0014\n",
|
|
"Epoch 40/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - loss: 0.0018 - val_loss: 4.8382e-04\n",
|
|
"Epoch 41/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - loss: 0.0014 - val_loss: 6.2043e-04\n",
|
|
"Epoch 42/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 23ms/step - loss: 0.0016 - val_loss: 6.2117e-04\n",
|
|
"Epoch 43/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0016 - val_loss: 0.0011\n",
|
|
"Epoch 44/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0016 - val_loss: 0.0012\n",
|
|
"Epoch 45/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0016 - val_loss: 7.6431e-04\n",
|
|
"Epoch 46/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0022 - val_loss: 4.9380e-04\n",
|
|
"Epoch 47/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0016 - val_loss: 7.1142e-04\n",
|
|
"Epoch 48/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0017 - val_loss: 4.5607e-04\n",
|
|
"Epoch 49/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0014 - val_loss: 0.0011\n",
|
|
"Epoch 50/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0013 - val_loss: 9.7056e-04\n",
|
|
"Epoch 51/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - loss: 0.0015 - val_loss: 4.2991e-04\n",
|
|
"Epoch 52/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0012 - val_loss: 4.6422e-04\n",
|
|
"Epoch 53/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0012 - val_loss: 4.3565e-04\n",
|
|
"Epoch 54/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0015 - val_loss: 9.2766e-04\n",
|
|
"Epoch 55/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0017 - val_loss: 3.9524e-04\n",
|
|
"Epoch 56/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0012 - val_loss: 9.5586e-04\n",
|
|
"Epoch 57/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0013 - val_loss: 0.0011\n",
|
|
"Epoch 58/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - loss: 0.0016 - val_loss: 3.7444e-04\n",
|
|
"Epoch 59/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0011 - val_loss: 6.2351e-04\n",
|
|
"Epoch 60/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0016 - val_loss: 5.4106e-04\n",
|
|
"Epoch 61/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - loss: 0.0013 - val_loss: 3.5580e-04\n",
|
|
"Epoch 62/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - loss: 0.0013 - val_loss: 3.3952e-04\n",
|
|
"Epoch 63/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - loss: 0.0013 - val_loss: 5.4781e-04\n",
|
|
"Epoch 64/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - loss: 0.0010 - val_loss: 4.3097e-04\n",
|
|
"Epoch 65/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - loss: 0.0011 - val_loss: 3.7820e-04\n",
|
|
"Epoch 66/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - loss: 0.0012 - val_loss: 3.8035e-04\n",
|
|
"Epoch 67/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0012 - val_loss: 3.7441e-04\n",
|
|
"Epoch 68/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - loss: 0.0012 - val_loss: 3.1452e-04\n",
|
|
"Epoch 69/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 8.8345e-04 - val_loss: 3.4853e-04\n",
|
|
"Epoch 70/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 15ms/step - loss: 0.0011 - val_loss: 3.1826e-04\n",
|
|
"Epoch 71/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - loss: 0.0011 - val_loss: 3.0337e-04\n",
|
|
"Epoch 72/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0012 - val_loss: 3.3823e-04\n",
|
|
"Epoch 73/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0015 - val_loss: 3.3784e-04\n",
|
|
"Epoch 74/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0013 - val_loss: 6.0157e-04\n",
|
|
"Epoch 75/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0013 - val_loss: 7.3720e-04\n",
|
|
"Epoch 76/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - loss: 9.4736e-04 - val_loss: 3.1509e-04\n",
|
|
"Epoch 77/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0010 - val_loss: 5.0552e-04\n",
|
|
"Epoch 78/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - loss: 0.0010 - val_loss: 2.9248e-04\n",
|
|
"Epoch 79/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 15ms/step - loss: 0.0011 - val_loss: 3.2384e-04\n",
|
|
"Epoch 80/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - loss: 9.8109e-04 - val_loss: 6.4628e-04\n",
|
|
"Epoch 81/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 9.6263e-04 - val_loss: 6.3153e-04\n",
|
|
"Epoch 82/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 15ms/step - loss: 0.0011 - val_loss: 2.8827e-04\n",
|
|
"Epoch 83/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 15ms/step - loss: 0.0010 - val_loss: 8.3648e-04\n",
|
|
"Epoch 84/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - loss: 0.0014 - val_loss: 2.9226e-04\n",
|
|
"Epoch 85/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 9.8804e-04 - val_loss: 2.8313e-04\n",
|
|
"Epoch 86/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 15ms/step - loss: 0.0011 - val_loss: 4.0354e-04\n",
|
|
"Epoch 87/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - loss: 0.0012 - val_loss: 6.6343e-04\n",
|
|
"Epoch 88/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - loss: 0.0010 - val_loss: 2.8362e-04\n",
|
|
"Epoch 89/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 23ms/step - loss: 0.0011 - val_loss: 2.6641e-04\n",
|
|
"Epoch 90/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 15ms/step - loss: 0.0012 - val_loss: 3.0804e-04\n",
|
|
"Epoch 91/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0011 - val_loss: 2.9357e-04\n",
|
|
"Epoch 92/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - loss: 9.1025e-04 - val_loss: 4.8552e-04\n",
|
|
"Epoch 93/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0011 - val_loss: 3.1646e-04\n",
|
|
"Epoch 94/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 7.6501e-04 - val_loss: 8.0415e-04\n",
|
|
"Epoch 95/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 8.9690e-04 - val_loss: 3.7813e-04\n",
|
|
"Epoch 96/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - loss: 0.0011 - val_loss: 2.6486e-04\n",
|
|
"Epoch 97/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 9.5229e-04 - val_loss: 3.0072e-04\n",
|
|
"Epoch 98/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 7.9825e-04 - val_loss: 2.3989e-04\n",
|
|
"Epoch 99/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - loss: 9.5839e-04 - val_loss: 0.0011\n",
|
|
"Epoch 100/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - loss: 0.0014 - val_loss: 2.8011e-04\n",
|
|
"Waktu training: 57.64 detik\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"model_adro.summary()"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 302
|
|
},
|
|
"id": "GJBjljeAYYr_",
|
|
"outputId": "2bd5991f-9b21-4218-b699-2d3b2f639d86"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[1mModel: \"sequential_4\"\u001b[0m\n"
|
|
],
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential_4\"</span>\n",
|
|
"</pre>\n"
|
|
]
|
|
},
|
|
"metadata": {}
|
|
},
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
|
|
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
|
|
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
|
|
"│ lstm_8 (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m7\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m42,400\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dropout_8 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m7\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ lstm_9 (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m80,400\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dropout_9 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dense_4 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1\u001b[0m) │ \u001b[38;5;34m101\u001b[0m │\n",
|
|
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
|
|
],
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
|
|
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
|
|
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
|
|
"│ lstm_8 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LSTM</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">7</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">100</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">42,400</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dropout_8 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">7</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">100</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ lstm_9 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LSTM</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">100</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">80,400</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dropout_9 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">100</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dense_4 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">101</span> │\n",
|
|
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
|
|
"</pre>\n"
|
|
]
|
|
},
|
|
"metadata": {}
|
|
},
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m368,705\u001b[0m (1.41 MB)\n"
|
|
],
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">368,705</span> (1.41 MB)\n",
|
|
"</pre>\n"
|
|
]
|
|
},
|
|
"metadata": {}
|
|
},
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m122,901\u001b[0m (480.08 KB)\n"
|
|
],
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">122,901</span> (480.08 KB)\n",
|
|
"</pre>\n"
|
|
]
|
|
},
|
|
"metadata": {}
|
|
},
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
|
|
],
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
|
|
"</pre>\n"
|
|
]
|
|
},
|
|
"metadata": {}
|
|
},
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[1m Optimizer params: \u001b[0m\u001b[38;5;34m245,804\u001b[0m (960.18 KB)\n"
|
|
],
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Optimizer params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">245,804</span> (960.18 KB)\n",
|
|
"</pre>\n"
|
|
]
|
|
},
|
|
"metadata": {}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"plt.plot(model_adro.history.history['loss'], label='Training Loss')\n",
|
|
"plt.plot(model_adro.history.history['val_loss'], label='Validation Loss')\n",
|
|
"plt.xlabel('Epoch')\n",
|
|
"plt.ylabel('Loss')\n",
|
|
"plt.legend()\n",
|
|
"plt.show()"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 449
|
|
},
|
|
"id": "aI9DnLVzRaye",
|
|
"outputId": "ee04d252-04f8-4628-ac45-89ce25a069f5"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
],
|
|
"image/png": "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78+RI0eYOHEiKSkptG3blvnz5zsHYiclJWG1nsxx3bp1Y8aMGYwfP56nn36amJgY5syZQ8uWLQGw2Wxs3bqVjz/+mLS0NMLDw+nUqRO//fYbLVq0cJ7n888/Z+TIkfTs2dO5UOQbb7xRvW++FF4nApLd4XBzTUREqkdekZ3mExe45dqbn4vH36dyPgqfeuop/vWvf9GoUSNq1qzJ/v37uemmm3jhhRfw9fXlk08+oU+fPmzbto369euXeZ5nn32Wl19+mVdeeYU333yTgQMHsm/fPsLCwkotn5uby7/+9S8+/fRTrFYr9957L48//jiff/45AC+99BKff/45H374Ic2aNeP1119nzpw5XHfddRV+r/fffz87duxg7ty5BAcH8+STT3LTTTexefNmvL29GTFiBIWFhfz6668EBASwefNm50LMEyZMYPPmzfzwww9ERESwc+dO8vLyKlyXquL2gAQwcuRIZwvQ6X7++eczjt15553O1qDT+fn5MXv27HNeMywsjBkzZpxXPauDWpBERC5Ozz33HNdff73z67CwMOfyMgDPP/88X3/9NXPnzi3zMw/M8DFgwAAA/vnPf/LGG2+wcuVKevXqVWr5oqIipk+fTuPGjQHzM/W5555zPv/mm28ybtw4brvtNgCmTZvmbM2piJJgtGzZMrp16waYjQ7R0dHMmTOHO++8k6SkJPr160erVq0AaNSokfP1SUlJtGvXzrnUToMGDSpcl6rkEQFJTrI5W5AUkETkz6GGt43Nz8W77dqV5dS19QCys7OZPHky3333HcnJyRQXF5OXl0dSUtJZz9O6dWvn3wMCAggODj7rLGx/f39nOAJz/7GS8pmZmaSmprps32Wz2ejQoQOOCvZUbNmyBS8vL5cxu+Hh4Vx55ZVs2bIFgEcffZRHHnmEH3/8kbi4OPr16+d8X4888gj9+vUjMTGRG264gb59+zqDlidx+xgkcWU70Z1YbFdAEpE/B4vFgr+Pl1selTnYOSAgwOXrxx9/nK+//pp//vOf/Pbbb6xbt45WrVpRWFh41vN4e3ufcX/OFmZKK+/mTTJ48MEH2b17N/fddx8bNmygY8eOvPnmmwDceOON7Nu3j8cee4xDhw7Rs2dPl0HunkIBycN4qQVJROSSsGzZMu6//35uu+02WrVqRVRUFHv37q3WOoSEhBAZGcmqVaucx+x2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eSCNQRIREXEvBSQPpFlsIiIi7qWA5IHUgiQiIuJeCkgeqKQFyW4oIImIiLiDApIH8joxSNuuQdoiIiJuoYDkgbQXm4iIiHspIHkg7cUmIiLiXgpIHkgtSCIiIu6lgOSBNItNRETEvRSQPJDVonWQRERE3EkByQNpDJKIiIh7KSB5II1BEhERcS+PCEhvvfUWDRo0wM/Pjy5durBy5cqzlp81axZNmzbFz8+PVq1a8f333zufKyoq4sknn6RVq1YEBARQt25dBg0axKFDh1zOkZ6ezsCBAwkODiY0NJShQ4eSnZ1dJe/vfJWsg2QY4FBIEhERqXZuD0hffvklY8eOZdKkSSQmJtKmTRvi4+M5fPhwqeWXL1/OgAEDGDp0KGvXrqVv37707duXjRs3ApCbm0tiYiITJkwgMTGR2bNns23bNm655RaX8wwcOJBNmzaxcOFC5s2bx6+//srw4cOr/P2WR0kLEqgVSURExB0shuHe/Sy6dOlCp06dmDZtGgAOh4Po6GhGjRrFU089dUb5/v37k5OTw7x585zHunbtStu2bZk+fXqp11i1ahWdO3dm37591K9fny1bttC8eXNWrVpFx44dAZg/fz433XQTBw4coG7dumeco6CggIKCAufXWVlZREdHk5mZSXBw8AXdg9PlFBTTYtICALY814saPrZKPb+IiMifVVZWFiEhIef8/HZrC1JhYSFr1qwhLi7OecxqtRIXF0dCQkKpr0lISHApDxAfH19meYDMzEwsFguhoaHOc4SGhjrDEUBcXBxWq5UVK1aUeo4pU6YQEhLifERHR5f3bZ63U1uQtB+biIhI9XNrQEpLS8NutxMZGelyPDIykpSUlFJfk5KScl7l8/PzefLJJxkwYIAzKaakpFC7dm2Xcl5eXoSFhZV5nnHjxpGZmel87N+/v1zvsSK8Tg1I2o9NRESk2nm5uwJVqaioiLvuugvDMHj77bcv6Fy+vr74+vpWUs3OznUMktZCEhERqW5uDUgRERHYbDZSU1NdjqemphIVFVXqa6KiospVviQc7du3j59++smlnzEqKuqMQeDFxcWkp6eXed3qZLFYsFkt2B2G1kISERFxA7d2sfn4+NChQwcWL17sPOZwOFi8eDGxsbGlviY2NtalPMDChQtdypeEox07drBo0SLCw8PPOEdGRgZr1qxxHvvpp59wOBx0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\n"
|
|
},
|
|
"metadata": {}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
""
|
|
],
|
|
"metadata": {
|
|
"id": "68QaIN0wnG_d"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
""
|
|
],
|
|
"metadata": {
|
|
"id": "PRfI-Ju4nIPk"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"### Make predictions"
|
|
],
|
|
"metadata": {
|
|
"id": "KlDnmsvS9yAt"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"y_pred_adro = model_adro.predict(X_test_adro)"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "GLRYn08EvYVC",
|
|
"outputId": "4adcdf7a-d4cc-4ed6-e1d8-d62d750a8c13"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"\u001b[1m8/8\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 63ms/step\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## DSSA"
|
|
],
|
|
"metadata": {
|
|
"id": "_oU4JdWGvTCD"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"model_dssa = create_lstm_model(100)\n",
|
|
"\n",
|
|
"start_time = time.time()\n",
|
|
"model_dssa.fit(X_train_dssa, y_train_dssa, epochs=100, batch_size=32, validation_split=0.1)\n",
|
|
"\n",
|
|
"end_time = time.time()\n",
|
|
"elapsed_time = end_time - start_time\n",
|
|
"\n",
|
|
"print(f\"Waktu training: {elapsed_time:.2f} detik\")"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "96mJEkpbBTFX",
|
|
"outputId": "3a3722f5-0f28-46e6-abf4-f1d4da6b8a95"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"Epoch 1/100\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stderr",
|
|
"text": [
|
|
"/usr/local/lib/python3.11/dist-packages/keras/src/layers/rnn/rnn.py:200: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
|
|
" super().__init__(**kwargs)\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 53ms/step - loss: 6.0729e-04 - val_loss: 1.1607e-04\n",
|
|
"Epoch 2/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - loss: 5.3662e-05 - val_loss: 4.0032e-05\n",
|
|
"Epoch 3/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 4.7505e-05 - val_loss: 4.6214e-05\n",
|
|
"Epoch 4/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - loss: 3.9637e-05 - val_loss: 2.3383e-05\n",
|
|
"Epoch 5/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - loss: 3.3811e-05 - val_loss: 3.4817e-05\n",
|
|
"Epoch 6/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 18ms/step - loss: 4.1101e-05 - val_loss: 2.0400e-05\n",
|
|
"Epoch 7/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - loss: 4.3098e-05 - val_loss: 2.6784e-05\n",
|
|
"Epoch 8/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - loss: 3.4498e-05 - val_loss: 2.7796e-05\n",
|
|
"Epoch 9/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 3.6598e-05 - val_loss: 1.9876e-05\n",
|
|
"Epoch 10/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 23ms/step - loss: 2.5330e-05 - val_loss: 2.1431e-05\n",
|
|
"Epoch 11/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - loss: 3.2087e-05 - val_loss: 2.9069e-05\n",
|
|
"Epoch 12/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 2.6639e-05 - val_loss: 1.9305e-05\n",
|
|
"Epoch 13/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 2.5186e-05 - val_loss: 3.1775e-05\n",
|
|
"Epoch 14/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 18ms/step - loss: 3.5259e-05 - val_loss: 1.7241e-05\n",
|
|
"Epoch 15/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 23ms/step - loss: 4.4257e-05 - val_loss: 3.6952e-05\n",
|
|
"Epoch 16/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 28ms/step - loss: 2.4323e-05 - val_loss: 2.3037e-05\n",
|
|
"Epoch 17/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 26ms/step - loss: 3.3564e-05 - val_loss: 1.7497e-05\n",
|
|
"Epoch 18/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 26ms/step - loss: 2.3239e-05 - val_loss: 1.6559e-05\n",
|
|
"Epoch 19/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - loss: 3.1591e-05 - val_loss: 1.6294e-05\n",
|
|
"Epoch 20/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 25ms/step - loss: 2.3948e-05 - val_loss: 1.5452e-05\n",
|
|
"Epoch 21/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 17ms/step - loss: 2.7339e-05 - val_loss: 1.7759e-05\n",
|
|
"Epoch 22/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 23ms/step - loss: 2.8005e-05 - val_loss: 1.9440e-05\n",
|
|
"Epoch 23/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - loss: 2.6300e-05 - val_loss: 1.7108e-05\n",
|
|
"Epoch 24/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 25ms/step - loss: 2.2018e-05 - val_loss: 1.3593e-05\n",
|
|
"Epoch 25/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - loss: 2.1934e-05 - val_loss: 1.3414e-05\n",
|
|
"Epoch 26/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - loss: 2.0099e-05 - val_loss: 1.6968e-05\n",
|
|
"Epoch 27/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 23ms/step - loss: 1.6595e-05 - val_loss: 1.3755e-05\n",
|
|
"Epoch 28/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 18ms/step - loss: 2.1161e-05 - val_loss: 2.2154e-05\n",
|
|
"Epoch 29/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 23ms/step - loss: 2.9517e-05 - val_loss: 2.4757e-05\n",
|
|
"Epoch 30/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - loss: 2.0809e-05 - val_loss: 1.3173e-05\n",
|
|
"Epoch 31/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 18ms/step - loss: 2.1917e-05 - val_loss: 1.7585e-05\n",
|
|
"Epoch 32/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 29ms/step - loss: 2.6970e-05 - val_loss: 1.3342e-05\n",
|
|
"Epoch 33/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 42ms/step - loss: 1.7368e-05 - val_loss: 1.6150e-05\n",
|
|
"Epoch 34/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 34ms/step - loss: 2.7698e-05 - val_loss: 1.9286e-05\n",
|
|
"Epoch 35/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 30ms/step - loss: 2.5868e-05 - val_loss: 1.5217e-05\n",
|
|
"Epoch 36/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - loss: 1.8167e-05 - val_loss: 2.5588e-05\n",
|
|
"Epoch 37/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 18ms/step - loss: 2.2198e-05 - val_loss: 1.6807e-05\n",
|
|
"Epoch 38/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 1.8543e-05 - val_loss: 1.0588e-05\n",
|
|
"Epoch 39/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 1.6675e-05 - val_loss: 1.1626e-05\n",
|
|
"Epoch 40/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 1.5276e-05 - val_loss: 1.8952e-05\n",
|
|
"Epoch 41/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - loss: 2.2376e-05 - val_loss: 1.7271e-05\n",
|
|
"Epoch 42/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 2.4067e-05 - val_loss: 1.3342e-05\n",
|
|
"Epoch 43/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - loss: 1.8935e-05 - val_loss: 1.1219e-05\n",
|
|
"Epoch 44/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 18ms/step - loss: 1.9269e-05 - val_loss: 4.3474e-05\n",
|
|
"Epoch 45/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 23ms/step - loss: 2.5148e-05 - val_loss: 1.0248e-05\n",
|
|
"Epoch 46/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 18ms/step - loss: 1.8836e-05 - val_loss: 8.6959e-06\n",
|
|
"Epoch 47/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 18ms/step - loss: 1.4780e-05 - val_loss: 8.6072e-06\n",
|
|
"Epoch 48/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 23ms/step - loss: 1.7145e-05 - val_loss: 8.5170e-06\n",
|
|
"Epoch 49/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - loss: 1.6996e-05 - val_loss: 8.4682e-06\n",
|
|
"Epoch 50/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - loss: 1.8741e-05 - val_loss: 8.2660e-06\n",
|
|
"Epoch 51/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 34ms/step - loss: 1.4392e-05 - val_loss: 7.8097e-06\n",
|
|
"Epoch 52/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 26ms/step - loss: 1.4907e-05 - val_loss: 1.4739e-05\n",
|
|
"Epoch 53/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 1.7821e-05 - val_loss: 8.8018e-06\n",
|
|
"Epoch 54/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 18ms/step - loss: 1.5245e-05 - val_loss: 1.1252e-05\n",
|
|
"Epoch 55/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 18ms/step - loss: 1.5844e-05 - val_loss: 7.5283e-06\n",
|
|
"Epoch 56/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 1.5407e-05 - val_loss: 8.9423e-06\n",
|
|
"Epoch 57/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 18ms/step - loss: 1.3309e-05 - val_loss: 1.9220e-05\n",
|
|
"Epoch 58/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 23ms/step - loss: 1.6204e-05 - val_loss: 7.4776e-06\n",
|
|
"Epoch 59/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 26ms/step - loss: 1.5898e-05 - val_loss: 7.0166e-06\n",
|
|
"Epoch 60/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - loss: 1.2958e-05 - val_loss: 1.7142e-05\n",
|
|
"Epoch 61/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - loss: 1.4782e-05 - val_loss: 6.7864e-06\n",
|
|
"Epoch 62/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 1.6536e-05 - val_loss: 7.0573e-06\n",
|
|
"Epoch 63/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - loss: 1.4730e-05 - val_loss: 7.5857e-06\n",
|
|
"Epoch 64/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 23ms/step - loss: 1.7158e-05 - val_loss: 1.6419e-05\n",
|
|
"Epoch 65/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - loss: 1.4458e-05 - val_loss: 7.7400e-06\n",
|
|
"Epoch 66/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 18ms/step - loss: 1.4316e-05 - val_loss: 6.2454e-06\n",
|
|
"Epoch 67/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 26ms/step - loss: 1.5386e-05 - val_loss: 7.0862e-06\n",
|
|
"Epoch 68/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 29ms/step - loss: 1.2294e-05 - val_loss: 1.1513e-05\n",
|
|
"Epoch 69/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 34ms/step - loss: 1.3214e-05 - val_loss: 6.1237e-06\n",
|
|
"Epoch 70/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - loss: 1.2710e-05 - val_loss: 6.4623e-06\n",
|
|
"Epoch 71/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 1.2616e-05 - val_loss: 7.6943e-06\n",
|
|
"Epoch 72/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 1.2407e-05 - val_loss: 7.1094e-06\n",
|
|
"Epoch 73/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 23ms/step - loss: 1.3236e-05 - val_loss: 6.1194e-06\n",
|
|
"Epoch 74/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 1.5359e-05 - val_loss: 8.1674e-06\n",
|
|
"Epoch 75/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 1.0886e-05 - val_loss: 7.8858e-06\n",
|
|
"Epoch 76/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - loss: 1.2566e-05 - val_loss: 8.4608e-06\n",
|
|
"Epoch 77/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 1.3648e-05 - val_loss: 1.0483e-05\n",
|
|
"Epoch 78/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 1.5020e-05 - val_loss: 6.9493e-06\n",
|
|
"Epoch 79/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - loss: 1.4242e-05 - val_loss: 5.6512e-06\n",
|
|
"Epoch 80/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 26ms/step - loss: 1.2484e-05 - val_loss: 1.1918e-05\n",
|
|
"Epoch 81/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - loss: 1.3433e-05 - val_loss: 1.0469e-05\n",
|
|
"Epoch 82/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 1.6092e-05 - val_loss: 8.0667e-06\n",
|
|
"Epoch 83/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 26ms/step - loss: 1.7249e-05 - val_loss: 5.3213e-06\n",
|
|
"Epoch 84/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 38ms/step - loss: 1.2485e-05 - val_loss: 1.1703e-05\n",
|
|
"Epoch 85/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 17ms/step - loss: 1.3541e-05 - val_loss: 1.8672e-05\n",
|
|
"Epoch 86/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 18ms/step - loss: 1.8206e-05 - val_loss: 6.9480e-06\n",
|
|
"Epoch 87/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 26ms/step - loss: 1.3479e-05 - val_loss: 1.5265e-05\n",
|
|
"Epoch 88/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 18ms/step - loss: 1.5031e-05 - val_loss: 5.2197e-06\n",
|
|
"Epoch 89/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - loss: 1.3136e-05 - val_loss: 4.8828e-06\n",
|
|
"Epoch 90/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 1.3792e-05 - val_loss: 5.2959e-06\n",
|
|
"Epoch 91/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - loss: 1.1710e-05 - val_loss: 5.3255e-06\n",
|
|
"Epoch 92/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - loss: 1.4487e-05 - val_loss: 1.2576e-05\n",
|
|
"Epoch 93/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - loss: 1.1391e-05 - val_loss: 6.8992e-06\n",
|
|
"Epoch 94/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 25ms/step - loss: 1.2469e-05 - val_loss: 5.2722e-06\n",
|
|
"Epoch 95/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 18ms/step - loss: 1.1185e-05 - val_loss: 4.9925e-06\n",
|
|
"Epoch 96/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 23ms/step - loss: 1.0215e-05 - val_loss: 5.2174e-06\n",
|
|
"Epoch 97/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 18ms/step - loss: 1.3569e-05 - val_loss: 4.8879e-06\n",
|
|
"Epoch 98/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 28ms/step - loss: 1.4445e-05 - val_loss: 5.8271e-06\n",
|
|
"Epoch 99/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 29ms/step - loss: 1.4308e-05 - val_loss: 6.0410e-06\n",
|
|
"Epoch 100/100\n",
|
|
"\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 34ms/step - loss: 1.7205e-05 - val_loss: 6.0648e-06\n",
|
|
"Waktu training: 81.70 detik\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"model_dssa.summary()"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 302
|
|
},
|
|
"id": "Dsn7vLiNYe0Z",
|
|
"outputId": "ecf174b3-f774-47af-eb03-7ed54cdd259d"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[1mModel: \"sequential_2\"\u001b[0m\n"
|
|
],
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential_2\"</span>\n",
|
|
"</pre>\n"
|
|
]
|
|
},
|
|
"metadata": {}
|
|
},
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
|
|
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
|
|
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
|
|
"│ lstm_4 (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m7\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m42,400\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dropout_4 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m7\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ lstm_5 (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m80,400\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dropout_5 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dense_2 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1\u001b[0m) │ \u001b[38;5;34m101\u001b[0m │\n",
|
|
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
|
|
],
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
|
|
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
|
|
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
|
|
"│ lstm_4 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LSTM</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">7</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">100</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">42,400</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dropout_4 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">7</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">100</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ lstm_5 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">LSTM</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">100</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">80,400</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dropout_5 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">100</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dense_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">101</span> │\n",
|
|
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
|
|
"</pre>\n"
|
|
]
|
|
},
|
|
"metadata": {}
|
|
},
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m368,705\u001b[0m (1.41 MB)\n"
|
|
],
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">368,705</span> (1.41 MB)\n",
|
|
"</pre>\n"
|
|
]
|
|
},
|
|
"metadata": {}
|
|
},
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m122,901\u001b[0m (480.08 KB)\n"
|
|
],
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">122,901</span> (480.08 KB)\n",
|
|
"</pre>\n"
|
|
]
|
|
},
|
|
"metadata": {}
|
|
},
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
|
|
],
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
|
|
"</pre>\n"
|
|
]
|
|
},
|
|
"metadata": {}
|
|
},
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"\u001b[1m Optimizer params: \u001b[0m\u001b[38;5;34m245,804\u001b[0m (960.18 KB)\n"
|
|
],
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Optimizer params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">245,804</span> (960.18 KB)\n",
|
|
"</pre>\n"
|
|
]
|
|
},
|
|
"metadata": {}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"plt.plot(model_dssa.history.history['loss'], label='Training Loss')\n",
|
|
"plt.plot(model_dssa.history.history['val_loss'], label='Validation Loss')\n",
|
|
"plt.xlabel('Epoch')\n",
|
|
"plt.ylabel('Loss')\n",
|
|
"plt.legend()\n",
|
|
"plt.show()"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 449
|
|
},
|
|
"id": "xVpdraikRRxX",
|
|
"outputId": "9a00efd0-12ec-4669-f276-227e2d7fbaca"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
],
|
|
"image/png": "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QojZs2eLpk2bCmtraxEcHCx27dol7+vevbsYOnSoWfs//vhDtGzZUlhbW4uAgACxatUqs/0mk0lMnjxZeHp6Cp1OJ3r16iUSExPN2ly5ckUMHjxYODg4CCcnJzFs2DCRk5Mj7x86dKgAcM2re/futepLdeo70DqQlCmaTVgpQj/dUC/nJyIiuhvV5vtbJYTgcyWFZGdnw9nZGQaDAU5OTnV+/iOXDOg7azs8HHXY/V7YjQ8gIiKiG6rN97fiM8NT/eGoQyIiImUx0LJgHHVIRESkLAZaFsyKow6JiIgUxUDLglVktLgEDxERkRIYaFkw1mgREREpi4GWBWONFhERkbIYaFkwbVmgJQRgYrBFRETU4BhoWTBNWTE8wKwWERGREhhoWbDyjBbAOi0iIiIlMNCyYBp15YwWRx4SERE1NAZaFqx81CHAjBYREZESGGhZsEoJLZQYGWgRERE1NAZaFkylUsl1WsxoERERNTwGWhaOs8MTEREph4GWhWNGi4iISDkMtCwcZ4cnIiJSDgMtC6fVcL1DIiIipTDQsnByRoujDomIiBocAy0LxxotIiIi5TDQsnAcdUhERKQcBloWjhktIiIi5TDQsnAcdUhERKQcBloWzoqjDomIiBTDQMvCMaNFRESkHAZaFq6iRovF8ERERA2NgZaF4zxaREREymGgZeG0atZoERERKYWBloVjjRYREZFybirQSkpKwoULF+T3u3fvxrhx4/DDDz/UWceobmg1nEeLiIhIKTcVaD377LPYtGkTACAlJQWPPPIIdu/ejffeew8ffvhhnXaQbg0zWkRERMq5qUDr8OHDCA4OBgD88ccfaNeuHXbu3ImFCxdiwYIFddk/ukVauRieow6JiIga2k0FWiUlJdDpdACADRs24IknngAAtG7dGsnJyXXXO7plzGgREREp56YCrYCAAMybNw/btm1DVFQUevfuDQC4dOkSGjVqVKcdpFvDUYdERETKualA6/PPP8f333+PHj16YPDgwejQoQMAYMWKFfIjRbo9MKNFRESkHO3NHNSjRw+kp6cjOzsbrq6u8vZRo0bBzs6uzjpHt44zwxMRESnnpjJaBQUFKCoqkoOsc+fOYebMmUhMTISHh0eddpBuDTNaREREyrmpQKt///745ZdfAABZWVkICQnBl19+iYiICHz33Xd12kG6NfI8WlyCh4iI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\n"
|
|
},
|
|
"metadata": {}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"### Make predictions"
|
|
],
|
|
"metadata": {
|
|
"id": "pJw3fvSKvWcK"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"y_pred_dssa = model_dssa.predict(X_test_dssa)"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "RR2M3q-_vaZU",
|
|
"outputId": "1131bf3c-4428-4bf6-8ec2-ed93fe710b31"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"\u001b[1m8/8\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 57ms/step\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## Evaluate Model"
|
|
],
|
|
"metadata": {
|
|
"id": "BNJ4gdxPF3f2"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"def evaluate_model(y_true, y_pred):\n",
|
|
" rmse = np.sqrt(mean_squared_error(y_true, y_pred))\n",
|
|
" mape = np.mean(np.abs((y_true - y_pred) / y_true)) * 100\n",
|
|
" r2 = r2_score(y_true, y_pred)\n",
|
|
"\n",
|
|
" print(f'RMSE: {rmse:.3f}')\n",
|
|
" print(f'MAPE: {mape:.3f}%')\n",
|
|
" print(f'R-squared: {r2:.5f}')\n",
|
|
"\n",
|
|
" return rmse, mape, r2"
|
|
],
|
|
"metadata": {
|
|
"id": "NFvlAVTVvypg"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"# Evaluate ADRO model\n",
|
|
"print(\"Evaluation for ADRO:\")\n",
|
|
"rmse_adro, mape_adro, r2_adro = evaluate_model(y_test_adro, y_pred_adro)\n",
|
|
"\n",
|
|
"# Evaluate DSSA model\n",
|
|
"print(\"\\nEvaluation for DSSA:\")\n",
|
|
"rmse_dssa, mape_dssa, r2_dssa = evaluate_model(y_test_dssa, y_pred_dssa)"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "AE2uyUC5v0ZG",
|
|
"outputId": "6214b719-aa41-430a-b3c5-bf867434809c"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"Evaluation for ADRO:\n",
|
|
"RMSE: 0.023\n",
|
|
"MAPE: 17.053%\n",
|
|
"R-squared: 0.95269\n",
|
|
"\n",
|
|
"Evaluation for DSSA:\n",
|
|
"RMSE: 0.039\n",
|
|
"MAPE: 115.017%\n",
|
|
"R-squared: 0.98061\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## Invert"
|
|
],
|
|
"metadata": {
|
|
"id": "oZQ0i9Hozuda"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"### ADRO"
|
|
],
|
|
"metadata": {
|
|
"id": "U1QWVjzn-jVZ"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"dummy_input_adro = np.zeros((len(y_pred_adro), 5))\n",
|
|
"dummy_input_adro[:, 1] = y_pred_adro.reshape(-1)\n",
|
|
"dummy_input_adro"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "-zc5rA_b4oOh",
|
|
"outputId": "45e92e5e-ed07-4146-9765-229b8aec8cbe"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "execute_result",
|
|
"data": {
|
|
"text/plain": [
|
|
"array([[0. , 0.59014332, 0. , 0. , 0. ],\n",
|
|
" [0. , 0.58159274, 0. , 0. , 0. ],\n",
|
|
" [0. , 0.57574308, 0. , 0. , 0. ],\n",
|
|
" ...,\n",
|
|
" [0. , 0.83483815, 0. , 0. , 0. ],\n",
|
|
" [0. , 0.83351439, 0. , 0. , 0. ],\n",
|
|
" [0. , 0.84000373, 0. , 0. , 0. ]])"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"execution_count": 43
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"inverted_adro = scaler.inverse_transform(dummy_input_adro)\n",
|
|
"pred_lstm_adro_real = inverted_adro[:, 1]\n",
|
|
"pred_lstm_adro_real = pred_lstm_adro_real / 10\n",
|
|
"pred_lstm_adro_real"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "5LjQOTRK43O2",
|
|
"outputId": "74710e42-d281-4623-d3e9-7d4dfa5bf803"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "execute_result",
|
|
"data": {
|
|
"text/plain": [
|
|
"array([2680.07354277, 2642.57495525, 2616.92127377, 2638.38320628,\n",
|
|
" 2654.42325944, 2690.1174292 , 2721.12554982, 2716.84989268,\n",
|
|
" 2641.32548156, 2570.72917244, 2545.21690628, 2524.19882447,\n",
|
|
" 2517.85735339, 2466.04549581, 2412.92796436, 2326.40661639,\n",
|
|
" 2262.77207145, 2275.22916731, 2328.40446731, 2325.6828104 ,\n",
|
|
" 2301.24540529, 2299.76616436, 2308.28428134, 2317.1040495 ,\n",
|
|
" 2323.23065293, 2350.15837935, 2362.01243424, 2374.73197186,\n",
|
|
" 2393.75298694, 2426.76209524, 2450.35806608, 2439.61180815,\n",
|
|
" 2416.07883379, 2412.01647592, 2428.26982835, 2440.12623581,\n",
|
|
" 2460.3546398 , 2458.20334932, 2444.28374189, 2406.72451046,\n",
|
|
" 2383.36405757, 2385.54906815, 2408.55193108, 2420.69718131,\n",
|
|
" 2415.10513306, 2355.35911754, 2327.67255804, 2344.74721724,\n",
|
|
" 2354.43717325, 2415.23400137, 2450.51176703, 2462.91762924,\n",
|
|
" 2463.88740903, 2464.49437094, 2455.53397164, 2336.17368427,\n",
|
|
" 2299.094899 , 2273.11342672, 2276.10040075, 2287.42225304,\n",
|
|
" 2289.78710419, 2280.491595 , 2286.81398416, 2290.19409803,\n",
|
|
" 2300.26020312, 2330.49197713, 2345.62629256, 2345.46004459,\n",
|
|
" 2326.17606497, 2298.7741659 , 2261.49619675, 2210.84493816,\n",
|
|
" 2175.4579089 , 2169.12401831, 2177.96103862, 2201.95799118,\n",
|
|
" 2211.24304453, 2229.46340314, 2244.90459767, 2250.39130327,\n",
|
|
" 2263.03085366, 2283.96764126, 2295.60813549, 2306.123842 ,\n",
|
|
" 2315.94475749, 2348.60176516, 2363.75908345, 2329.65184984,\n",
|
|
" 2291.43363866, 2264.24320909, 2255.62915972, 2255.25065807,\n",
|
|
" 2229.85131505, 2215.49491462, 2217.1545189 , 2230.81455994,\n",
|
|
" 2277.69988391, 2344.54568079, 2425.23580301, 2496.97127664,\n",
|
|
" 2552.33655375, 2569.92171967, 2530.20989078, 2519.36822325,\n",
|
|
" 2520.59626245, 2516.61598298, 2510.10669556, 2511.25448614,\n",
|
|
" 2522.64482424, 2529.54908127, 2539.42567414, 2584.13722757,\n",
|
|
" 2609.77574807, 2605.01624662, 2562.3989993 , 2547.34597808,\n",
|
|
" 2554.49777728, 2560.23150226, 2572.25023675, 2639.97746152,\n",
|
|
" 2667.85928395, 2652.16531932, 2647.95553401, 2653.68455386,\n",
|
|
" 2653.5112482 , 2614.83324116, 2552.28192195, 2505.59395209,\n",
|
|
" 2498.83163318, 2542.71299237, 2588.60396531, 2611.8826012 ,\n",
|
|
" 2674.90364933, 2713.90526482, 2746.67179748, 2807.42471105,\n",
|
|
" 2823.90756932, 2800.65010652, 2787.91959026, 2788.24581268,\n",
|
|
" 2802.49321091, 2810.19420347, 2817.88839972, 2811.59528694,\n",
|
|
" 2668.08513024, 2598.7597293 , 2596.9030323 , 2632.52061298,\n",
|
|
" 2732.65756464, 2800.50686142, 2806.48054808, 2784.87667745,\n",
|
|
" 2765.29287642, 2704.20589855, 2648.38709909, 2651.57665515,\n",
|
|
" 2670.17081028, 2676.68532562, 2621.4434275 , 2599.93182972,\n",
|
|
" 2611.62120503, 2609.72033209, 2598.35900897, 2612.13955364,\n",
|
|
" 2630.67489463, 2657.96543893, 2684.94073945, 2719.26257932,\n",
|
|
" 2768.10210106, 2787.90625906, 2805.59153971, 2815.16465163,\n",
|
|
" 2818.99279854, 2819.50801039, 2800.07869449, 2761.11184469,\n",
|
|
" 2757.74323225, 2773.59429598, 2796.30047426, 2862.61851227,\n",
|
|
" 2975.18955693, 3080.85033244, 3119.47684443, 3127.86452472,\n",
|
|
" 3115.63432074, 3121.15474644, 3137.74399295, 3168.36498585,\n",
|
|
" 3190.41976488, 3196.45226568, 3246.78096139, 3160.75025403,\n",
|
|
" 3126.98231265, 3164.26577112, 3161.91738793, 3152.904448 ,\n",
|
|
" 3172.80114025, 3192.11544183, 3191.05234361, 3177.43229619,\n",
|
|
" 3214.18564323, 3237.6903868 , 3243.10782242, 3242.27684399,\n",
|
|
" 3272.0786213 , 3374.78849545, 3451.02599531, 3505.37261155,\n",
|
|
" 3536.11776763, 3544.15517706, 3558.20574397, 3602.27374002,\n",
|
|
" 3615.01131397, 3585.83636469, 3557.11807451, 3513.36218548,\n",
|
|
" 3477.94352728, 3483.53191599, 3500.74589935, 3786.13771459,\n",
|
|
" 3787.30014336, 3765.5480611 , 3736.58039898, 3695.75293124,\n",
|
|
" 3704.37168574, 3725.714683 , 3753.1827153 , 3747.37736776,\n",
|
|
" 3775.83635294])"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"execution_count": 44
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"### DSSA"
|
|
],
|
|
"metadata": {
|
|
"id": "HpdWzprW-pP8"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"dummy_input_dssa = np.zeros((len(y_pred_dssa), 5))\n",
|
|
"dummy_input_dssa[:, 1] = y_pred_dssa.reshape(-1)\n",
|
|
"dummy_input_dssa"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "VnGXeC7y-qI5",
|
|
"outputId": "7350613f-d5f6-40ed-832d-5f2ced802022"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "execute_result",
|
|
"data": {
|
|
"text/plain": [
|
|
"array([[0. , 0.09492499, 0. , 0. , 0. ],\n",
|
|
" [0. , 0.09493433, 0. , 0. , 0. ],\n",
|
|
" [0. , 0.09503628, 0. , 0. , 0. ],\n",
|
|
" ...,\n",
|
|
" [0. , 0.86946911, 0. , 0. , 0. ],\n",
|
|
" [0. , 0.8616249 , 0. , 0. , 0. ],\n",
|
|
" [0. , 0.87051117, 0. , 0. , 0. ]])"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"execution_count": 45
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"inverted_dssa = scaler.inverse_transform(dummy_input_dssa)\n",
|
|
"pred_lstm_dssa_real = inverted_dssa[:, 1]\n",
|
|
"pred_lstm_dssa_real"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "rUEqSHno-yof",
|
|
"outputId": "cb62e813-46f5-4d5c-b2ee-fc5a0a61acbe"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "execute_result",
|
|
"data": {
|
|
"text/plain": [
|
|
"array([ 5082.93527693, 5083.34501542, 5087.81587016, 5089.03168909,\n",
|
|
" 5070.51046349, 5085.22804808, 5060.38038168, 4971.20083071,\n",
|
|
" 4949.66178633, 4949.40039016, 4956.51494041, 4960.5077669 ,\n",
|
|
" 4998.44451975, 5007.93875538, 5042.28523184, 5056.97112214,\n",
|
|
" 5057.96344735, 5056.33690968, 5055.07828712, 4972.53362443,\n",
|
|
" 4951.61768317, 5033.10499836, 5056.30488865, 5058.93649459,\n",
|
|
" 5063.1773207 , 5057.11587027, 5054.88027953, 5095.43720223,\n",
|
|
" 5105.8770385 , 5106.34199694, 5105.13794083, 5104.13515978,\n",
|
|
" 5103.68163742, 5103.53460208, 5103.53460208, 5103.53460208,\n",
|
|
" 5103.53460208, 5103.53460208, 5103.53460208, 5103.53460208,\n",
|
|
" 5103.53460208, 5103.53460208, 5103.53460208, 5619.75021377,\n",
|
|
" 6542.94397786, 7578.27408478, 8144.0739359 , 8115.44190645,\n",
|
|
" 7991.30290501, 7802.81862244, 7816.77587092, 7867.07633585,\n",
|
|
" 7879.92657155, 7885.57664976, 7885.12966231, 7884.10172187,\n",
|
|
" 7635.66688128, 7576.83509886, 7575.19026347, 7582.8720434 ,\n",
|
|
" 7596.63977966, 7601.30047336, 7602.21274599, 7601.96049869,\n",
|
|
" 8482.51531959, 9454.35687132, 10665.18117815, 11893.46348166,\n",
|
|
" 12961.06686667, 13863.40775132, 14002.88613349, 13597.00584501,\n",
|
|
" 13203.64381909, 14189.75825518, 14803.03287864, 14536.59960479,\n",
|
|
" 14101.38543814, 14488.40076506, 14122.75718898, 13997.6033169 ,\n",
|
|
" 12459.00716454, 11855.22187553, 11645.57365209, 11701.30919687,\n",
|
|
" 11763.18036325, 11792.19141714, 12486.90859169, 12624.88133192,\n",
|
|
" 11368.510703 , 11559.61025424, 11724.57018852, 11765.05195983,\n",
|
|
" 12489.62057695, 12619.40116122, 12654.4661504 , 12641.62114263,\n",
|
|
" 12625.41196615, 12615.03976613, 12609.33348775, 11872.22177543,\n",
|
|
" 11703.34285907, 11701.44120194, 10928.72275688, 11536.0283988 ,\n",
|
|
" 11849.59597647, 11911.23450026, 12212.38510638, 12268.51993382,\n",
|
|
" 12259.90431607, 12239.94671851, 11207.21488953, 11747.55671419,\n",
|
|
" 12013.58547747, 12065.46085432, 12062.00650394, 12051.62123412,\n",
|
|
" 12044.46420699, 11363.88791174, 11782.23418355, 12022.32264444,\n",
|
|
" 12063.54612738, 12056.26493707, 12045.09678572, 12038.44686717,\n",
|
|
" 12037.27319837, 12041.49474651, 12207.3205556 , 12244.46495131,\n",
|
|
" 12244.68060315, 12239.59121972, 12070.86522013, 12076.96882069,\n",
|
|
" 12204.40076038, 12238.00062403, 12489.37878549, 12540.05435392,\n",
|
|
" 12540.69869548, 12420.58062062, 12506.38522029, 12527.08779693,\n",
|
|
" 12721.3522023 , 14709.89742339, 17105.01824677, 17566.0975644 ,\n",
|
|
" 19206.80551648, 20561.15657866, 20708.74347001, 20610.74343204,\n",
|
|
" 20474.46715295, 19550.68263352, 18780.96763045, 18900.28191209,\n",
|
|
" 18987.14385927, 18661.49389714, 19329.21211481, 19905.00252753,\n",
|
|
" 21741.11718625, 21199.58535552, 22520.43588459, 23199.92215782,\n",
|
|
" 23244.61828887, 23135.50629973, 23078.50363702, 23179.65088487,\n",
|
|
" 23353.33818376, 23921.92190409, 25692.41566837, 26455.85454941,\n",
|
|
" 26000.05804837, 25920.8863765 , 25899.90671992, 26250.94086409,\n",
|
|
" 27035.84821254, 27136.3262862 , 26874.74452525, 27291.09895825,\n",
|
|
" 27761.39249086, 27810.14549047, 27793.56774539, 28126.50281876,\n",
|
|
" 27490.33250481, 27556.05534375, 27721.51650518, 27797.82850295,\n",
|
|
" 27779.43405449, 27995.56947738, 28546.27631366, 28460.93307823,\n",
|
|
" 28372.36421406, 28419.58020419, 29820.56172907, 30115.515939 ,\n",
|
|
" 30438.19382668, 30577.47877568, 30338.51039737, 30242.90997624,\n",
|
|
" 34224.21673864, 39007.46603787, 39707.59215266, 38833.31606776,\n",
|
|
" 38258.69409591, 38388.92689556, 38325.82324624, 38655.07001966,\n",
|
|
" 38845.08673728, 38807.05620855, 38992.71283805, 39328.36643159,\n",
|
|
" 39157.92828709, 39343.62673998, 39968.23027343, 39174.32044089,\n",
|
|
" 38936.38196349, 38811.69076264, 38815.80513835, 38915.20625979,\n",
|
|
" 38927.27230698, 39240.06680548, 39046.83230102, 39116.85510695,\n",
|
|
" 39078.88208538, 38845.49712926, 38372.45893687, 37957.48206168,\n",
|
|
" 38529.78022158, 39018.76619428, 39050.56765229, 38706.55983716,\n",
|
|
" 39096.26754463])"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"execution_count": 46
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"### Simpan Prediksi"
|
|
],
|
|
"metadata": {
|
|
"id": "oW1oPxfEADez"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"adro_actual = adro['High'].iloc[919:]\n",
|
|
"dssa_actual = dssa['High'].iloc[919:]"
|
|
],
|
|
"metadata": {
|
|
"id": "68DFmVT-AugO"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"# Create dataframes for predictions\n",
|
|
"df_pred_adro = pd.DataFrame({'Actual ADRO': adro_actual.values, 'Predicted ADRO': pred_lstm_adro_real.flatten()})\n",
|
|
"df_pred_dssa = pd.DataFrame({'Actual DSSA': dssa_actual.values, 'Predicted DSSA': pred_lstm_dssa_real.flatten()})"
|
|
],
|
|
"metadata": {
|
|
"id": "zHtrPQLpBrR9"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"# Save predictions to CSV files\n",
|
|
"df_pred_adro.to_csv('LSTM_adro_predictions.csv', index=False)\n",
|
|
"df_pred_dssa.to_csv('LSTM_dssa_predictions.csv', index=False)\n",
|
|
"\n",
|
|
"print(\"ADRO predictions saved to 'LSTM_adro_predictions.csv'\")\n",
|
|
"print(\"DSSA predictions saved to 'LSTM_dssa_predictions.csv'\")"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "vIZ6f_P6nWRH",
|
|
"outputId": "ef1b5df3-4aa6-4188-bcc2-2e8970a3a700"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"ADRO predictions saved to 'LSTM_adro_predictions.csv'\n",
|
|
"DSSA predictions saved to 'LSTM_dssa_predictions.csv'\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"# prompt: downloadkan csv adro dan dssa tersebut\n",
|
|
"\n",
|
|
"from google.colab import files\n",
|
|
"\n",
|
|
"files.download('LSTM_adro_predictions.csv')\n",
|
|
"files.download('LSTM_dssa_predictions.csv')"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 17
|
|
},
|
|
"id": "gF4qL7w4n5zD",
|
|
"outputId": "dab98912-503e-4e26-b3eb-1b527447c24d"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"<IPython.core.display.Javascript object>"
|
|
],
|
|
"application/javascript": [
|
|
"\n",
|
|
" async function download(id, filename, size) {\n",
|
|
" if (!google.colab.kernel.accessAllowed) {\n",
|
|
" return;\n",
|
|
" }\n",
|
|
" const div = document.createElement('div');\n",
|
|
" const label = document.createElement('label');\n",
|
|
" label.textContent = `Downloading \"${filename}\": `;\n",
|
|
" div.appendChild(label);\n",
|
|
" const progress = document.createElement('progress');\n",
|
|
" progress.max = size;\n",
|
|
" div.appendChild(progress);\n",
|
|
" document.body.appendChild(div);\n",
|
|
"\n",
|
|
" const buffers = [];\n",
|
|
" let downloaded = 0;\n",
|
|
"\n",
|
|
" const channel = await google.colab.kernel.comms.open(id);\n",
|
|
" // Send a message to notify the kernel that we're ready.\n",
|
|
" channel.send({})\n",
|
|
"\n",
|
|
" for await (const message of channel.messages) {\n",
|
|
" // Send a message to notify the kernel that we're ready.\n",
|
|
" channel.send({})\n",
|
|
" if (message.buffers) {\n",
|
|
" for (const buffer of message.buffers) {\n",
|
|
" buffers.push(buffer);\n",
|
|
" downloaded += buffer.byteLength;\n",
|
|
" progress.value = downloaded;\n",
|
|
" }\n",
|
|
" }\n",
|
|
" }\n",
|
|
" const blob = new Blob(buffers, {type: 'application/binary'});\n",
|
|
" const a = document.createElement('a');\n",
|
|
" a.href = window.URL.createObjectURL(blob);\n",
|
|
" a.download = filename;\n",
|
|
" div.appendChild(a);\n",
|
|
" a.click();\n",
|
|
" div.remove();\n",
|
|
" }\n",
|
|
" "
|
|
]
|
|
},
|
|
"metadata": {}
|
|
},
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"<IPython.core.display.Javascript object>"
|
|
],
|
|
"application/javascript": [
|
|
"download(\"download_cbbef4c8-92a3-46c9-836d-819f02e6c57e\", \"LSTM_adro_predictions.csv\", 5857)"
|
|
]
|
|
},
|
|
"metadata": {}
|
|
},
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"<IPython.core.display.Javascript object>"
|
|
],
|
|
"application/javascript": [
|
|
"\n",
|
|
" async function download(id, filename, size) {\n",
|
|
" if (!google.colab.kernel.accessAllowed) {\n",
|
|
" return;\n",
|
|
" }\n",
|
|
" const div = document.createElement('div');\n",
|
|
" const label = document.createElement('label');\n",
|
|
" label.textContent = `Downloading \"${filename}\": `;\n",
|
|
" div.appendChild(label);\n",
|
|
" const progress = document.createElement('progress');\n",
|
|
" progress.max = size;\n",
|
|
" div.appendChild(progress);\n",
|
|
" document.body.appendChild(div);\n",
|
|
"\n",
|
|
" const buffers = [];\n",
|
|
" let downloaded = 0;\n",
|
|
"\n",
|
|
" const channel = await google.colab.kernel.comms.open(id);\n",
|
|
" // Send a message to notify the kernel that we're ready.\n",
|
|
" channel.send({})\n",
|
|
"\n",
|
|
" for await (const message of channel.messages) {\n",
|
|
" // Send a message to notify the kernel that we're ready.\n",
|
|
" channel.send({})\n",
|
|
" if (message.buffers) {\n",
|
|
" for (const buffer of message.buffers) {\n",
|
|
" buffers.push(buffer);\n",
|
|
" downloaded += buffer.byteLength;\n",
|
|
" progress.value = downloaded;\n",
|
|
" }\n",
|
|
" }\n",
|
|
" }\n",
|
|
" const blob = new Blob(buffers, {type: 'application/binary'});\n",
|
|
" const a = document.createElement('a');\n",
|
|
" a.href = window.URL.createObjectURL(blob);\n",
|
|
" a.download = filename;\n",
|
|
" div.appendChild(a);\n",
|
|
" a.click();\n",
|
|
" div.remove();\n",
|
|
" }\n",
|
|
" "
|
|
]
|
|
},
|
|
"metadata": {}
|
|
},
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"<IPython.core.display.Javascript object>"
|
|
],
|
|
"application/javascript": [
|
|
"download(\"download_0caeb2af-ce0e-4324-8ea0-f3e5ba20d6de\", \"LSTM_dssa_predictions.csv\", 6008)"
|
|
]
|
|
},
|
|
"metadata": {}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [],
|
|
"metadata": {
|
|
"id": "AFFm5NWUHa1G"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": []
|
|
}
|
|
]
|
|
} |