update model jupyters

This commit is contained in:
giuseppenuc committed 2024-11-21 19:17:51 +01:00
1 parent 2dcbff3004
commit 1bd6a05aec
3 files changed
+530 -1006

No files matched your search

@@ -24,7 +24,7 @@
"!pip install tqdm\n", "!pip install tqdm\n",
"!pip install pydot\n", "!pip install pydot\n",
"!pip install tensorflow-io\n", "!pip install tensorflow-io\n",
"!pip install tensorflow-addons\n" "!pip install tensorflow-addons"
], ],
"outputs": [], "outputs": [],
"execution_count": null "execution_count": null
@@ -49,6 +49,10 @@
"import matplotlib.pyplot as plt\n", "import matplotlib.pyplot as plt\n",
"from tensorflow.keras.utils import plot_model\n", "from tensorflow.keras.utils import plot_model\n",
"import tensorflow_addons as tfa\n", "import tensorflow_addons as tfa\n",
"import os\n",
"import joblib\n",
"import seaborn as sns\n",
"from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score, confusion_matrix\n",
"\n", "\n",
"folder_name = datetime.now().strftime(\"%Y-%m-%d_%H-%M\")\n", "folder_name = datetime.now().strftime(\"%Y-%m-%d_%H-%M\")\n",
"\n", "\n",
@@ -1,190 +1,10 @@
{ {
"cells": [ "cells": [
{ {
"cell_type": "code",
"execution_count": 1,
"id": "8adcbe0819b88578",
"metadata": {}, "metadata": {},
"outputs": [ "cell_type": "code",
{ "outputs": [],
"name": "stdout", "execution_count": null,
"output_type": "stream",
"text": [
"Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease\n",
"Hit:2 http://security.ubuntu.com/ubuntu jammy-security InRelease\n",
"Hit:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease\n",
"Hit:4 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64 InRelease\n",
"Hit:5 http://archive.ubuntu.com/ubuntu jammy-backports InRelease\n",
"Reading package lists... Done\n",
"Reading package lists... Done\n",
"Building dependency tree... Done\n",
"Reading state information... Done\n",
"graphviz is already the newest version (2.42.2-6ubuntu0.1).\n",
"0 upgraded, 0 newly installed, 0 to remove and 121 not upgraded.\n",
"Requirement already satisfied: tensorflow in /usr/local/lib/python3.11/dist-packages (2.13.0)\n",
"Requirement already satisfied: absl-py>=1.0.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (2.0.0)\n",
"Requirement already satisfied: astunparse>=1.6.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (1.6.3)\n",
"Requirement already satisfied: flatbuffers>=23.1.21 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (23.5.26)\n",
"Requirement already satisfied: gast<=0.4.0,>=0.2.1 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (0.4.0)\n",
"Requirement already satisfied: google-pasta>=0.1.1 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (0.2.0)\n",
"Requirement already satisfied: grpcio<2.0,>=1.24.3 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (1.58.0)\n",
"Requirement already satisfied: h5py>=2.9.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (3.9.0)\n",
"Requirement already satisfied: keras<2.14,>=2.13.1 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (2.13.1)\n",
"Requirement already satisfied: libclang>=13.0.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (16.0.6)\n",
"Requirement already satisfied: numpy<=1.24.3,>=1.22 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (1.24.3)\n",
"Requirement already satisfied: opt-einsum>=2.3.2 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (3.3.0)\n",
"Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from tensorflow) (23.1)\n",
"Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (4.24.3)\n",
"Requirement already satisfied: setuptools in /usr/local/lib/python3.11/dist-packages (from tensorflow) (68.2.2)\n",
"Requirement already satisfied: six>=1.12.0 in /usr/lib/python3/dist-packages (from tensorflow) (1.16.0)\n",
"Requirement already satisfied: tensorboard<2.14,>=2.13 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (2.13.0)\n",
"Requirement already satisfied: tensorflow-estimator<2.14,>=2.13.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (2.13.0)\n",
"Requirement already satisfied: termcolor>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (2.3.0)\n",
"Requirement already satisfied: typing-extensions<4.6.0,>=3.6.6 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (4.5.0)\n",
"Requirement already satisfied: wrapt>=1.11.0 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (1.14.1)\n",
"Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /usr/local/lib/python3.11/dist-packages (from tensorflow) (0.37.1)\n",
"Requirement already satisfied: wheel<1.0,>=0.23.0 in /usr/local/lib/python3.11/dist-packages (from astunparse>=1.6.0->tensorflow) (0.41.2)\n",
"Requirement already satisfied: google-auth<3,>=1.6.3 in /usr/local/lib/python3.11/dist-packages (from tensorboard<2.14,>=2.13->tensorflow) (2.23.1)\n",
"Requirement already satisfied: google-auth-oauthlib<1.1,>=0.5 in /usr/local/lib/python3.11/dist-packages (from tensorboard<2.14,>=2.13->tensorflow) (1.0.0)\n",
"Requirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.11/dist-packages (from tensorboard<2.14,>=2.13->tensorflow) (3.4.4)\n",
"Requirement already satisfied: requests<3,>=2.21.0 in /usr/local/lib/python3.11/dist-packages (from tensorboard<2.14,>=2.13->tensorflow) (2.31.0)\n",
"Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /usr/local/lib/python3.11/dist-packages (from tensorboard<2.14,>=2.13->tensorflow) (0.7.1)\n",
"Requirement already satisfied: werkzeug>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from tensorboard<2.14,>=2.13->tensorflow) (2.3.7)\n",
"Requirement already satisfied: cachetools<6.0,>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.14,>=2.13->tensorflow) (5.3.1)\n",
"Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.11/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.14,>=2.13->tensorflow) (0.3.0)\n",
"Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.11/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.14,>=2.13->tensorflow) (4.9)\n",
"Requirement already satisfied: urllib3>=2.0.5 in /usr/local/lib/python3.11/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.14,>=2.13->tensorflow) (2.0.5)\n",
"Requirement already satisfied: requests-oauthlib>=0.7.0 in /usr/local/lib/python3.11/dist-packages (from google-auth-oauthlib<1.1,>=0.5->tensorboard<2.14,>=2.13->tensorflow) (1.3.1)\n",
"Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.21.0->tensorboard<2.14,>=2.13->tensorflow) (3.2.0)\n",
"Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.21.0->tensorboard<2.14,>=2.13->tensorflow) (3.4)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.21.0->tensorboard<2.14,>=2.13->tensorflow) (2023.7.22)\n",
"Requirement already satisfied: MarkupSafe>=2.1.1 in /usr/local/lib/python3.11/dist-packages (from werkzeug>=1.0.1->tensorboard<2.14,>=2.13->tensorflow) (2.1.3)\n",
"Requirement already satisfied: pyasn1<0.6.0,>=0.4.6 in /usr/local/lib/python3.11/dist-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.14,>=2.13->tensorflow) (0.5.0)\n",
"Requirement already satisfied: oauthlib>=3.0.0 in /usr/lib/python3/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<1.1,>=0.5->tensorboard<2.14,>=2.13->tensorflow) (3.2.0)\n",
"\u001B[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001B[0m\u001B[33m\n",
"\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3 -m pip install --upgrade pip\u001B[0m\n",
"Requirement already satisfied: numpy in /usr/local/lib/python3.11/dist-packages (1.24.3)\n",
"\u001B[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001B[0m\u001B[33m\n",
"\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3 -m pip install --upgrade pip\u001B[0m\n",
"Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (2.2.3)\n",
"Requirement already satisfied: numpy>=1.23.2 in /usr/local/lib/python3.11/dist-packages (from pandas) (1.24.3)\n",
"Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pandas) (2.8.2)\n",
"Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas) (2024.2)\n",
"Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas) (2024.2)\n",
"Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n",
"\u001B[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001B[0m\u001B[33m\n",
"\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3 -m pip install --upgrade pip\u001B[0m\n",
"Requirement already satisfied: keras in /usr/local/lib/python3.11/dist-packages (2.13.1)\n",
"\u001B[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001B[0m\u001B[33m\n",
"\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3 -m pip install --upgrade pip\u001B[0m\n",
"Requirement already satisfied: scikit-learn in /usr/local/lib/python3.11/dist-packages (1.5.2)\n",
"Requirement already satisfied: numpy>=1.19.5 in /usr/local/lib/python3.11/dist-packages (from scikit-learn) (1.24.3)\n",
"Requirement already satisfied: scipy>=1.6.0 in /usr/local/lib/python3.11/dist-packages (from scikit-learn) (1.14.1)\n",
"Requirement already satisfied: joblib>=1.2.0 in /usr/local/lib/python3.11/dist-packages (from scikit-learn) (1.4.2)\n",
"Requirement already satisfied: threadpoolctl>=3.1.0 in /usr/local/lib/python3.11/dist-packages (from scikit-learn) (3.5.0)\n",
"\u001B[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001B[0m\u001B[33m\n",
"\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3 -m pip install --upgrade pip\u001B[0m\n",
"Requirement already satisfied: matplotlib in /usr/local/lib/python3.11/dist-packages (3.8.0)\n",
"Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib) (1.1.1)\n",
"Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.11/dist-packages (from matplotlib) (0.11.0)\n",
"Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib) (4.42.1)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib) (1.4.5)\n",
"Requirement already satisfied: numpy<2,>=1.21 in /usr/local/lib/python3.11/dist-packages (from matplotlib) (1.24.3)\n",
"Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib) (23.1)\n",
"Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib) (10.0.1)\n",
"Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib) (3.2.0)\n",
"Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.11/dist-packages (from matplotlib) (2.8.2)\n",
"Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n",
"\u001B[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001B[0m\u001B[33m\n",
"\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3 -m pip install --upgrade pip\u001B[0m\n",
"Requirement already satisfied: joblib in /usr/local/lib/python3.11/dist-packages (1.4.2)\n",
"\u001B[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001B[0m\u001B[33m\n",
"\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3 -m pip install --upgrade pip\u001B[0m\n",
"Requirement already satisfied: pyarrow in /usr/local/lib/python3.11/dist-packages (18.0.0)\n",
"\u001B[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001B[0m\u001B[33m\n",
"\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3 -m pip install --upgrade pip\u001B[0m\n",
"Requirement already satisfied: fastparquet in /usr/local/lib/python3.11/dist-packages (2024.11.0)\n",
"Requirement already satisfied: pandas>=1.5.0 in /usr/local/lib/python3.11/dist-packages (from fastparquet) (2.2.3)\n",
"Requirement already satisfied: numpy in /usr/local/lib/python3.11/dist-packages (from fastparquet) (1.24.3)\n",
"Requirement already satisfied: cramjam>=2.3 in /usr/local/lib/python3.11/dist-packages (from fastparquet) (2.9.0)\n",
"Requirement already satisfied: fsspec in /usr/local/lib/python3.11/dist-packages (from fastparquet) (2024.10.0)\n",
"Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from fastparquet) (23.1)\n",
"Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pandas>=1.5.0->fastparquet) (2.8.2)\n",
"Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas>=1.5.0->fastparquet) (2024.2)\n",
"Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas>=1.5.0->fastparquet) (2024.2)\n",
"Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.8.2->pandas>=1.5.0->fastparquet) (1.16.0)\n",
"\u001B[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001B[0m\u001B[33m\n",
"\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3 -m pip install --upgrade pip\u001B[0m\n",
"Requirement already satisfied: scipy in /usr/local/lib/python3.11/dist-packages (1.14.1)\n",
"Requirement already satisfied: numpy<2.3,>=1.23.5 in /usr/local/lib/python3.11/dist-packages (from scipy) (1.24.3)\n",
"\u001B[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001B[0m\u001B[33m\n",
"\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3 -m pip install --upgrade pip\u001B[0m\n",
"Requirement already satisfied: seaborn in /usr/local/lib/python3.11/dist-packages (0.13.2)\n",
"Requirement already satisfied: numpy!=1.24.0,>=1.20 in /usr/local/lib/python3.11/dist-packages (from seaborn) (1.24.3)\n",
"Requirement already satisfied: pandas>=1.2 in /usr/local/lib/python3.11/dist-packages (from seaborn) (2.2.3)\n",
"Requirement already satisfied: matplotlib!=3.6.1,>=3.4 in /usr/local/lib/python3.11/dist-packages (from seaborn) (3.8.0)\n",
"Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.1.1)\n",
"Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.11/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (0.11.0)\n",
"Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (4.42.1)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.4.5)\n",
"Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (23.1)\n",
"Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (10.0.1)\n",
"Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (3.2.0)\n",
"Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.11/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (2.8.2)\n",
"Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas>=1.2->seaborn) (2024.2)\n",
"Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas>=1.2->seaborn) (2024.2)\n",
"Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib!=3.6.1,>=3.4->seaborn) (1.16.0)\n",
"\u001B[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001B[0m\u001B[33m\n",
"\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3 -m pip install --upgrade pip\u001B[0m\n",
"Requirement already satisfied: tqdm in /usr/local/lib/python3.11/dist-packages (4.67.0)\n",
"\u001B[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001B[0m\u001B[33m\n",
"\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3 -m pip install --upgrade pip\u001B[0m\n",
"Requirement already satisfied: pydot in /usr/local/lib/python3.11/dist-packages (3.0.2)\n",
"Requirement already satisfied: pyparsing>=3.0.9 in /usr/local/lib/python3.11/dist-packages (from pydot) (3.2.0)\n",
"\u001B[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001B[0m\u001B[33m\n",
"\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3 -m pip install --upgrade pip\u001B[0m\n",
"Requirement already satisfied: tensorflow-io in /usr/local/lib/python3.11/dist-packages (0.37.1)\n",
"Requirement already satisfied: tensorflow-io-gcs-filesystem==0.37.1 in /usr/local/lib/python3.11/dist-packages (from tensorflow-io) (0.37.1)\n",
"\u001B[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001B[0m\u001B[33m\n",
"\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3 -m pip install --upgrade pip\u001B[0m\n",
"Requirement already satisfied: tensorflow-addons in /usr/local/lib/python3.11/dist-packages (0.23.0)\n",
"Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from tensorflow-addons) (23.1)\n",
"Requirement already satisfied: typeguard<3.0.0,>=2.7 in /usr/local/lib/python3.11/dist-packages (from tensorflow-addons) (2.13.3)\n",
"\u001B[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001B[0m\u001B[33m\n",
"\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\n",
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3 -m pip install --upgrade pip\u001B[0m\n"
]
}
],
"source": [ "source": [
"from opt_einsum.paths import branch_1\n", "from opt_einsum.paths import branch_1\n",
"!apt-get update\n", "!apt-get update\n",
@@ -206,32 +26,14 @@
"!pip install pydot\n", "!pip install pydot\n",
"!pip install tensorflow-io\n", "!pip install tensorflow-io\n",
"!pip install tensorflow-addons" "!pip install tensorflow-addons"
] ],
"id": "5e0376433a89bbda"
}, },
{ {
"cell_type": "code",
"execution_count": 2,
"id": "7a813e3cbca057b7",
"metadata": {}, "metadata": {},
"outputs": [ "cell_type": "code",
{ "outputs": [],
"name": "stderr", "execution_count": null,
"output_type": "stream",
"text": [
"2024-11-20 18:26:10.290667: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n",
"To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
"/usr/local/lib/python3.11/dist-packages/tensorflow_addons/utils/tfa_eol_msg.py:23: UserWarning: \n",
"\n",
"TensorFlow Addons (TFA) has ended development and introduction of new features.\n",
"TFA has entered a minimal maintenance and release mode until a planned end of life in May 2024.\n",
"Please modify downstream libraries to take dependencies from other repositories in our TensorFlow community (e.g. Keras, Keras-CV, and Keras-NLP). \n",
"\n",
"For more information see: https://github.com/tensorflow/addons/issues/2807 \n",
"\n",
" warnings.warn(\n"
]
}
],
"source": [ "source": [
"import tensorflow as tf\n", "import tensorflow as tf\n",
"from tensorflow.keras.layers import Dense, LSTM, MultiHeadAttention, Dropout, BatchNormalization, LayerNormalization, Input, Activation, Lambda, Bidirectional, Add, MaxPooling1D, SpatialDropout1D, GlobalAveragePooling1D, \\\n", "from tensorflow.keras.layers import Dense, LSTM, MultiHeadAttention, Dropout, BatchNormalization, LayerNormalization, Input, Activation, Lambda, Bidirectional, Add, MaxPooling1D, SpatialDropout1D, GlobalAveragePooling1D, \\\n",
@@ -257,14 +59,14 @@
"folder_name = datetime.now().strftime(\"%Y-%m-%d_%H-%M\")\n", "folder_name = datetime.now().strftime(\"%Y-%m-%d_%H-%M\")\n",
"\n", "\n",
"random_state_value = None" "random_state_value = None"
] ],
"id": "4e7cf95955575047"
}, },
{ {
"cell_type": "code",
"execution_count": 3,
"id": "b3f525e19f78a1da",
"metadata": {}, "metadata": {},
"cell_type": "code",
"outputs": [], "outputs": [],
"execution_count": null,
"source": [ "source": [
"def get_season(date):\n", "def get_season(date):\n",
" month = date.month\n", " month = date.month\n",
@@ -635,16 +437,14 @@
" X_to_predict_seq = create_sequence_data(X_to_predict_scaled, sequence_length)\n", " X_to_predict_seq = create_sequence_data(X_to_predict_scaled, sequence_length)\n",
"\n", "\n",
" return X_train_seq, X_test_seq, y_train, y_test, feature_scaler, target_scaler, features, X_to_predict_seq" " return X_train_seq, X_test_seq, y_train, y_test, feature_scaler, target_scaler, features, X_to_predict_seq"
] ],
"id": "1f7b15beaf12c0eb"
}, },
{ {
"metadata": {},
"cell_type": "code", "cell_type": "code",
"id": "9dff3259-b376-4cfc-89d8-ab2ea18aaa5e", "outputs": [],
"metadata": { "execution_count": null,
"jupyter": {
"is_executing": true
}
},
"source": [ "source": [
"def create_residual_lstm_layer(x, units, dropout_rate, l2_reg=0.01, return_sequences=True, survival_probability=0.8):\n", "def create_residual_lstm_layer(x, units, dropout_rate, l2_reg=0.01, return_sequences=True, survival_probability=0.8):\n",
" \"\"\"\n", " \"\"\"\n",
@@ -1266,36 +1066,16 @@
"\n", "\n",
" return df" " return df"
], ],
"outputs": [], "id": "93bc105a8dad086d"
"execution_count": null
}, },
{ {
"cell_type": "code",
"execution_count": 5,
"id": "initial_id",
"metadata": {}, "metadata": {},
"outputs": [ "cell_type": "code",
{ "outputs": [],
"name": "stdout", "execution_count": null,
"output_type": "stream",
"text": [
"Initializing solar radiation model training...\n",
"\n",
"1. Preparing data...\n",
"\n",
"Selected features:\n",
"Number of features: 40\n",
"Features list: ['uvindex', 'cloudcover', 'visibility', 'temp', 'pressure', 'humidity', 'solar_elevation', 'solar_angle', 'day_length', 'hour_sin', 'hour_cos', 'day_of_year_sin', 'day_of_year_cos', 'month_sin', 'month_cos', 'clear_sky_index', 'atmospheric_attenuation', 'theoretical_radiation', 'expected_radiation', 'cloud_elevation', 'visibility_elevation', 'uv_cloud_interaction', 'temp_radiation_potential', 'cloud_rolling_12h', 'temp_rolling_12h', 'uv_rolling_12h', 'cloudcover_rolling_mean_6h', 'temp_rolling_mean_6h', 'temp_1h_lag', 'cloudcover_1h_lag', 'humidity_1h_lag', 'uv_lag_1h', 'season_Spring', 'season_Summer', 'season_Autumn', 'season_Winter', 'time_period_Morning', 'time_period_Afternoon', 'time_period_Evening', 'time_period_Night']\n",
"Training data shape: (103798, 24, 40)\n",
"Test data shape: (25933, 24, 40)\n"
]
}
],
"source": [ "source": [
"df = pd.read_parquet('../../sources/weather_data_uvindex.parquet')\n", "df = pd.read_parquet('../../sources/weather_data_uvindex.parquet')\n",
"\n", "\n",
"print(\"Initializing solar radiation model training...\")\n",
"\n",
"# Data preparation\n", "# Data preparation\n",
"print(\"\\n1. Preparing data...\")\n", "print(\"\\n1. Preparing data...\")\n",
"X_train_seq, X_test_seq, y_train, y_test, feature_scaler, target_scaler, features, X_to_predict_seq = prepare_hybrid_data(df)\n", "X_train_seq, X_test_seq, y_train, y_test, feature_scaler, target_scaler, features, X_to_predict_seq = prepare_hybrid_data(df)\n",
@@ -1304,8 +1084,8 @@
"print(f\"Test data shape: {X_test_seq.shape}\")\n", "print(f\"Test data shape: {X_test_seq.shape}\")\n",
"\n", "\n",
"# Save or load scaler and features\n", "# Save or load scaler and features\n",
"feature_scaler_path = f'{folder_name}_scale_X.joblib'\n", "feature_scaler_path = f'{folder_name}_feature_scaler.joblib'\n",
"target_scaler_path = f'{folder_name}_scale_y.joblib'\n", "target_scaler_path = f'{folder_name}_target_scaler.joblib'\n",
"features_path = f'{folder_name}_features.json'\n", "features_path = f'{folder_name}_features.json'\n",
"model_path = f'{folder_name}_best_model.h5'\n", "model_path = f'{folder_name}_best_model.h5'\n",
"history_path = f'{folder_name}_training_history.json'\n", "history_path = f'{folder_name}_training_history.json'\n",
@@ -1336,346 +1116,14 @@
"# Data quality verification\n", "# Data quality verification\n",
"if np.isnan(X_train_seq).any() or np.isnan(y_train).any():\n", "if np.isnan(X_train_seq).any() or np.isnan(y_train).any():\n",
" raise ValueError(\"Found NaN values in training data\")" " raise ValueError(\"Found NaN values in training data\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "44749f6a-8941-41e8-8105-c36417245ed5",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"2. Creating model...\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2024-11-20 18:26:58.091461: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1639] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 43404 MB memory: -> device: 0, name: NVIDIA L40, pci bus id: 0000:a1:00.0, compute capability: 8.9\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"SolarRadiationModel\"\n",
"__________________________________________________________________________________________________\n",
" Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
" input_1 (InputLayer) [(None, 24, 40)] 0 [] \n",
" \n",
" bidirectional (Bidirection (None, 24, 512) 608256 ['input_1[0][0]'] \n",
" al) \n",
" \n",
" layer_normalization (Layer (None, 24, 512) 1024 ['bidirectional[0][0]'] \n",
" Normalization) \n",
" \n",
" dropout (Dropout) (None, 24, 512) 0 ['layer_normalization[0][0]'] \n",
" \n",
" dense (Dense) (None, 24, 512) 20992 ['input_1[0][0]'] \n",
" \n",
" stochastic_depth (Stochast (None, 24, 512) 0 ['dropout[0][0]', \n",
" icDepth) 'dense[0][0]'] \n",
" \n",
" multi_head_attention (Mult (None, 24, 512) 1680230 ['stochastic_depth[0][0]', \n",
" iHeadAttention) 4 'stochastic_depth[0][0]'] \n",
" \n",
" stochastic_depth_1 (Stocha (None, 24, 512) 0 ['stochastic_depth[0][0]', \n",
" sticDepth) 'multi_head_attention[0][0]']\n",
" \n",
" layer_normalization_1 (Lay (None, 24, 512) 1024 ['stochastic_depth_1[0][0]'] \n",
" erNormalization) \n",
" \n",
" max_pooling1d (MaxPooling1 (None, 12, 512) 0 ['layer_normalization_1[0][0]'\n",
" D) ] \n",
" \n",
" bidirectional_1 (Bidirecti (None, 12, 256) 656384 ['max_pooling1d[0][0]'] \n",
" onal) \n",
" \n",
" layer_normalization_2 (Lay (None, 12, 256) 512 ['bidirectional_1[0][0]'] \n",
" erNormalization) \n",
" \n",
" dropout_1 (Dropout) (None, 12, 256) 0 ['layer_normalization_2[0][0]'\n",
" ] \n",
" \n",
" dense_1 (Dense) (None, 12, 256) 131328 ['max_pooling1d[0][0]'] \n",
" \n",
" stochastic_depth_2 (Stocha (None, 12, 256) 0 ['dropout_1[0][0]', \n",
" sticDepth) 'dense_1[0][0]'] \n",
" \n",
" multi_head_attention_1 (Mu (None, 12, 256) 3155200 ['stochastic_depth_2[0][0]', \n",
" ltiHeadAttention) 'stochastic_depth_2[0][0]'] \n",
" \n",
" stochastic_depth_3 (Stocha (None, 12, 256) 0 ['stochastic_depth_2[0][0]', \n",
" sticDepth) 'multi_head_attention_1[0][0]\n",
" '] \n",
" \n",
" layer_normalization_3 (Lay (None, 12, 256) 512 ['stochastic_depth_3[0][0]'] \n",
" erNormalization) \n",
" \n",
" max_pooling1d_1 (MaxPoolin (None, 6, 256) 0 ['layer_normalization_3[0][0]'\n",
" g1D) ] \n",
" \n",
" bidirectional_2 (Bidirecti (None, 6, 128) 164352 ['max_pooling1d_1[0][0]'] \n",
" onal) \n",
" \n",
" layer_normalization_4 (Lay (None, 6, 128) 256 ['bidirectional_2[0][0]'] \n",
" erNormalization) \n",
" \n",
" dropout_2 (Dropout) (None, 6, 128) 0 ['layer_normalization_4[0][0]'\n",
" ] \n",
" \n",
" dense_2 (Dense) (None, 6, 128) 32896 ['max_pooling1d_1[0][0]'] \n",
" \n",
" stochastic_depth_4 (Stocha (None, 6, 128) 0 ['dropout_2[0][0]', \n",
" sticDepth) 'dense_2[0][0]'] \n",
" \n",
" multi_head_attention_2 (Mu (None, 6, 128) 527488 ['stochastic_depth_4[0][0]', \n",
" ltiHeadAttention) 'stochastic_depth_4[0][0]'] \n",
" \n",
" stochastic_depth_5 (Stocha (None, 6, 128) 0 ['stochastic_depth_4[0][0]', \n",
" sticDepth) 'multi_head_attention_2[0][0]\n",
" '] \n",
" \n",
" layer_normalization_5 (Lay (None, 6, 128) 256 ['stochastic_depth_5[0][0]'] \n",
" erNormalization) \n",
" \n",
" bidirectional_3 (Bidirecti (None, 64) 41216 ['layer_normalization_5[0][0]'\n",
" onal) ] \n",
" \n",
" layer_normalization_6 (Lay (None, 64) 128 ['bidirectional_3[0][0]'] \n",
" erNormalization) \n",
" \n",
" dropout_3 (Dropout) (None, 64) 0 ['layer_normalization_6[0][0]'\n",
" ] \n",
" \n",
" dense_3 (Dense) (None, 64) 4160 ['dropout_3[0][0]'] \n",
" \n",
" batch_normalization (Batch (None, 64) 256 ['dense_3[0][0]'] \n",
" Normalization) \n",
" \n",
" activation (Activation) (None, 64) 0 ['batch_normalization[0][0]'] \n",
" \n",
" dropout_4 (Dropout) (None, 64) 0 ['activation[0][0]'] \n",
" \n",
" dense_4 (Dense) (None, 32) 2080 ['dropout_4[0][0]'] \n",
" \n",
" batch_normalization_1 (Bat (None, 32) 128 ['dense_4[0][0]'] \n",
" chNormalization) \n",
" \n",
" activation_1 (Activation) (None, 32) 0 ['batch_normalization_1[0][0]'\n",
" ] \n",
" \n",
" dropout_5 (Dropout) (None, 32) 0 ['activation_1[0][0]'] \n",
" \n",
" dense_5 (Dense) (None, 1) 33 ['dropout_5[0][0]'] \n",
" \n",
" lambda (Lambda) (None, 1) 0 ['dense_5[0][0]'] \n",
" \n",
"==================================================================================================\n",
"Total params: 22150785 (84.50 MB)\n",
"Trainable params: 22150593 (84.50 MB)\n",
"Non-trainable params: 192 (768.00 Byte)\n",
"__________________________________________________________________________________________________\n",
"\n",
"4. Starting training...\n",
"Epoch 1/100\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2024-11-20 18:28:08.462396: I tensorflow/compiler/xla/stream_executor/cuda/cuda_blas.cc:606] TensorFloat-32 will be used for the matrix multiplication. This will only be logged once.\n",
"2024-11-20 18:28:08.551588: I tensorflow/compiler/xla/stream_executor/cuda/cuda_dnn.cc:432] Loaded cuDNN version 8905\n",
"2024-11-20 18:28:08.771296: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7494b4d65840 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:\n",
"2024-11-20 18:28:08.771333: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): NVIDIA L40, Compute Capability 8.9\n",
"2024-11-20 18:28:08.779091: I tensorflow/compiler/mlir/tensorflow/utils/dump_mlir_util.cc:255] disabling MLIR crash reproducer, set env var `MLIR_CRASH_REPRODUCER_DIRECTORY` to enable.\n",
"2024-11-20 18:28:08.849938: I tensorflow/tsl/platform/default/subprocess.cc:304] Start cannot spawn child process: No such file or directory\n",
"2024-11-20 18:28:08.914097: I ./tensorflow/compiler/jit/device_compiler.h:186] Compiled cluster using XLA! This line is logged at most once for the lifetime of the process.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"810/811 [============================>.] - ETA: 0s - loss: 72528.1172 - mse: 106644.4453 - mae: 187.8485 - rmse: 303.3813 - custom_mape: 54.8740"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/usr/local/lib/python3.11/dist-packages/keras/src/engine/training.py:3000: UserWarning: You are saving your model as an HDF5 file via `model.save()`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')`.\n",
" saving_api.save_model(\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Epoch 1 Detailed Metrics:\n",
"811/811 [==============================] - 59s 47ms/step - loss: 72456.4219 - mse: 106540.3906 - mae: 187.7001 - rmse: 303.1588 - custom_mape: 54.8602 - val_loss: 65954.8828 - val_mse: 98078.7031 - val_mae: 177.0511 - val_rmse: 289.9380 - val_custom_mape: 52.7771 - lr: 2.5941e-05\n",
"Epoch 2/100\n",
"811/811 [==============================] - 35s 43ms/step - loss: 69535.9297 - mse: 104347.7812 - mae: 185.7435 - rmse: 299.4631 - custom_mape: 53.3868 - val_loss: 63015.7383 - val_mse: 95844.1562 - val_mae: 175.0045 - val_rmse: 286.3577 - val_custom_mape: 52.6138 - lr: 2.1071e-04\n",
"Epoch 3/100\n",
"811/811 [==============================] - 34s 42ms/step - loss: 65040.6328 - mse: 100867.1875 - mae: 182.4250 - rmse: 293.5602 - custom_mape: 52.5410 - val_loss: 56593.6914 - val_mse: 90806.5000 - val_mae: 170.5536 - val_rmse: 278.2007 - val_custom_mape: 51.3653 - lr: 5.0264e-05\n",
"Epoch 4/100\n",
"811/811 [==============================] - 35s 43ms/step - loss: 63179.4570 - mse: 99390.6328 - mae: 181.0240 - rmse: 291.0518 - custom_mape: 52.2108 - val_loss: 54896.5859 - val_mse: 89427.9453 - val_mae: 169.4865 - val_rmse: 276.2857 - val_custom_mape: 51.1932 - lr: 2.4079e-04\n",
"Epoch 5/100\n",
"811/811 [==============================] - 36s 44ms/step - loss: 58537.2383 - mse: 95561.4453 - mae: 177.0757 - rmse: 284.3125 - custom_mape: 51.0609 - val_loss: 48058.6758 - val_mse: 83616.4297 - val_mae: 162.7125 - val_rmse: 266.4749 - val_custom_mape: 48.8749 - lr: 2.0369e-04\n",
"Epoch 6/100\n",
"810/811 [============================>.] - ETA: 0s - loss: 52993.6406 - mse: 90827.1172 - mae: 172.1619 - rmse: 275.9435 - custom_mape: 49.6688\n",
"Epoch 6 Detailed Metrics:\n",
"811/811 [==============================] - 35s 43ms/step - loss: 52937.2539 - mse: 90734.0391 - mae: 172.0164 - rmse: 275.7198 - custom_mape: 49.6529 - val_loss: 44455.3203 - val_mse: 80384.6250 - val_mae: 160.1475 - val_rmse: 260.5288 - val_custom_mape: 48.5323 - lr: 1.3436e-04\n",
"Epoch 7/100\n",
"811/811 [==============================] - 34s 42ms/step - loss: 49213.3164 - mse: 87367.3594 - mae: 168.3520 - rmse: 269.5628 - custom_mape: 48.4534 - val_loss: 40941.0117 - val_mse: 77138.5859 - val_mae: 156.7561 - val_rmse: 255.2473 - val_custom_mape: 47.8560 - lr: 5.9983e-05\n",
"Epoch 8/100\n",
"811/811 [==============================] - 33s 41ms/step - loss: 47519.0391 - mse: 85789.4453 - mae: 166.6271 - rmse: 266.6346 - custom_mape: 48.0879 - val_loss: 41349.0312 - val_mse: 77484.2734 - val_mae: 156.9061 - val_rmse: 255.2714 - val_custom_mape: 47.6252 - lr: 9.7321e-06\n",
"Epoch 9/100\n",
"811/811 [==============================] - 34s 42ms/step - loss: 46780.1719 - mse: 85090.1484 - mae: 165.8883 - rmse: 265.3610 - custom_mape: 47.9995 - val_loss: 40748.4062 - val_mse: 76847.7734 - val_mae: 156.1971 - val_rmse: 253.6026 - val_custom_mape: 48.0470 - lr: 2.1795e-04\n",
"Epoch 10/100\n",
"811/811 [==============================] - 34s 42ms/step - loss: 42443.9609 - mse: 80814.5703 - mae: 160.8849 - rmse: 257.1220 - custom_mape: 46.6063 - val_loss: 35794.1914 - val_mse: 71881.1797 - val_mae: 149.8344 - val_rmse: 244.4584 - val_custom_mape: 45.0777 - lr: 2.0849e-04\n",
"Epoch 11/100\n",
"810/811 [============================>.] - ETA: 0s - loss: 37364.0820 - mse: 75557.8281 - mae: 154.7132 - rmse: 246.8283 - custom_mape: 45.6366\n",
"Epoch 11 Detailed Metrics:\n",
"811/811 [==============================] - 35s 43ms/step - loss: 37322.7383 - mse: 75477.1875 - mae: 154.5700 - rmse: 246.6078 - custom_mape: 45.6219 - val_loss: 29906.3047 - val_mse: 65430.3633 - val_mae: 141.8013 - val_rmse: 231.2519 - val_custom_mape: 42.4489 - lr: 1.8906e-04\n",
"Epoch 12/100\n",
"811/811 [==============================] - 35s 43ms/step - loss: 32976.7734 - mse: 70634.2344 - mae: 148.5551 - rmse: 236.7462 - custom_mape: 44.1733 - val_loss: 29356.2773 - val_mse: 64463.9414 - val_mae: 141.1121 - val_rmse: 229.5340 - val_custom_mape: 42.9936 - lr: 1.6162e-04\n",
"Epoch 13/100\n",
"811/811 [==============================] - 37s 46ms/step - loss: 29592.6035 - mse: 66591.3828 - mae: 143.4485 - rmse: 228.2309 - custom_mape: 43.5998 - val_loss: 22979.4648 - val_mse: 56865.0938 - val_mae: 131.7958 - val_rmse: 214.5151 - val_custom_mape: 39.4901 - lr: 1.2891e-04\n",
"Epoch 14/100\n",
"811/811 [==============================] - 34s 42ms/step - loss: 26951.7656 - mse: 63337.9648 - mae: 139.0988 - rmse: 221.0572 - custom_mape: 41.7504 - val_loss: 25277.5273 - val_mse: 59844.8008 - val_mae: 134.7617 - val_rmse: 219.8931 - val_custom_mape: 40.0160 - lr: 9.4242e-05\n",
"Epoch 15/100\n",
"811/811 [==============================] - 32s 39ms/step - loss: 25191.9902 - mse: 61055.3008 - mae: 135.9996 - rmse: 215.9450 - custom_mape: 40.7117 - val_loss: 20492.2637 - val_mse: 53286.4492 - val_mae: 126.0936 - val_rmse: 205.3292 - val_custom_mape: 37.5140 - lr: 6.1091e-05\n",
"Epoch 16/100\n",
"810/811 [============================>.] - ETA: 0s - loss: 24165.8750 - mse: 59707.5938 - mae: 134.1485 - rmse: 212.9445 - custom_mape: 40.2365\n",
"Epoch 16 Detailed Metrics:\n",
"811/811 [==============================] - 32s 39ms/step - loss: 24138.5391 - mse: 59641.1523 - mae: 134.0126 - rmse: 212.7257 - custom_mape: 40.2135 - val_loss: 18706.9590 - val_mse: 51048.4062 - val_mae: 124.1925 - val_rmse: 201.2298 - val_custom_mape: 37.6503 - lr: 3.2793e-05\n",
"Epoch 17/100\n",
"811/811 [==============================] - 32s 39ms/step - loss: 23539.9023 - mse: 58823.9805 - mae: 132.9010 - rmse: 210.9564 - custom_mape: 40.2574 - val_loss: 18301.4316 - val_mse: 49967.2422 - val_mae: 121.6120 - val_rmse: 197.4946 - val_custom_mape: 36.3558 - lr: 1.2196e-05\n",
"Epoch 18/100\n",
"811/811 [==============================] - 31s 38ms/step - loss: 23317.7012 - mse: 58529.7852 - mae: 132.4304 - rmse: 210.2198 - custom_mape: 39.6456 - val_loss: 18765.3145 - val_mse: 50811.3203 - val_mae: 123.1689 - val_rmse: 199.7548 - val_custom_mape: 37.1078 - lr: 1.3695e-06\n",
"Epoch 19/100\n",
"811/811 [==============================] - 30s 37ms/step - loss: 22958.7871 - mse: 58021.4062 - mae: 131.7025 - rmse: 209.0721 - custom_mape: 39.5251 - val_loss: 22003.3301 - val_mse: 53933.9766 - val_mae: 125.5596 - val_rmse: 204.8436 - val_custom_mape: 36.6993 - lr: 1.9652e-04\n",
"Epoch 20/100\n",
"811/811 [==============================] - 31s 39ms/step - loss: 20586.0566 - mse: 54516.5820 - mae: 126.9349 - rmse: 201.2817 - custom_mape: 40.1354 - val_loss: 19601.9219 - val_mse: 51482.2773 - val_mae: 123.8536 - val_rmse: 202.0632 - val_custom_mape: 37.4784 - lr: 1.9403e-04\n",
"Epoch 21/100\n",
"810/811 [============================>.] - ETA: 0s - loss: 18059.2461 - mse: 50707.9844 - mae: 121.4836 - rmse: 192.6480 - custom_mape: 37.9434\n",
"Epoch 21 Detailed Metrics:\n",
"811/811 [==============================] - 30s 37ms/step - loss: 18040.1738 - mse: 50651.9258 - mae: 121.3665 - rmse: 192.4565 - custom_mape: 37.9314 - val_loss: 27332.0293 - val_mse: 61814.3359 - val_mae: 138.1345 - val_rmse: 223.8045 - val_custom_mape: 41.7334 - lr: 1.8912e-04\n",
"Epoch 22/100\n",
"811/811 [==============================] - 32s 39ms/step - loss: 15813.7461 - mse: 47093.9961 - mae: 116.1009 - rmse: 183.7298 - custom_mape: 36.6234 - val_loss: 15547.1533 - val_mse: 25035.1250 - val_mae: 83.4982 - val_rmse: 138.2488 - val_custom_mape: 26.6810 - lr: 1.8191e-04\n",
"Epoch 23/100\n",
"811/811 [==============================] - 30s 37ms/step - loss: 14064.2656 - mse: 44066.1055 - mae: 111.5707 - rmse: 176.2691 - custom_mape: 35.6786 - val_loss: 15586.9551 - val_mse: 33592.5234 - val_mae: 96.0797 - val_rmse: 154.1422 - val_custom_mape: 30.0333 - lr: 1.7260e-04\n",
"Epoch 24/100\n",
"811/811 [==============================] - 30s 37ms/step - loss: 13045.5820 - mse: 41777.5039 - mae: 108.8138 - rmse: 172.3399 - custom_mape: 35.9103 - val_loss: 21892.5098 - val_mse: 38512.5820 - val_mae: 102.0757 - val_rmse: 169.1723 - val_custom_mape: 30.7781 - lr: 1.6140e-04\n",
"Epoch 25/100\n",
"811/811 [==============================] - 30s 38ms/step - loss: 11775.0107 - mse: 39650.0430 - mae: 105.5830 - rmse: 166.6329 - custom_mape: 34.5414 - val_loss: 15617.9189 - val_mse: 24887.7910 - val_mae: 81.2674 - val_rmse: 134.0242 - val_custom_mape: 27.7191 - lr: 1.4861e-04\n",
"Epoch 26/100\n",
"810/811 [============================>.] - ETA: 0s - loss: 10885.3691 - mse: 37987.7930 - mae: 103.5588 - rmse: 163.0795 - custom_mape: 34.6734\n",
"Epoch 26 Detailed Metrics:\n",
"811/811 [==============================] - 32s 40ms/step - loss: 10874.6182 - mse: 37946.5391 - mae: 103.4657 - rmse: 162.9293 - custom_mape: 34.6890 - val_loss: 11223.3662 - val_mse: 30266.1914 - val_mae: 92.8420 - val_rmse: 151.5255 - val_custom_mape: 29.9186 - lr: 1.3456e-04\n",
"Epoch 27/100\n",
"811/811 [==============================] - 31s 38ms/step - loss: 10069.0938 - mse: 36349.3711 - mae: 100.6019 - rmse: 158.6973 - custom_mape: 33.1503 - val_loss: 12460.3320 - val_mse: 29399.4160 - val_mae: 91.2526 - val_rmse: 146.5061 - val_custom_mape: 29.6366 - lr: 1.1958e-04\n",
"Epoch 28/100\n",
"811/811 [==============================] - 31s 38ms/step - loss: 9476.7852 - mse: 35165.4648 - mae: 99.0255 - rmse: 156.0713 - custom_mape: 32.9813 - val_loss: 13038.0391 - val_mse: 25782.1328 - val_mae: 83.4327 - val_rmse: 134.0097 - val_custom_mape: 27.6063 - lr: 1.0408e-04\n",
"Epoch 29/100\n",
"811/811 [==============================] - 31s 38ms/step - loss: 9004.3877 - mse: 34155.9062 - mae: 97.4144 - rmse: 153.6510 - custom_mape: 32.3526 - val_loss: 14318.9199 - val_mse: 27135.3652 - val_mae: 85.2753 - val_rmse: 138.5686 - val_custom_mape: 27.5048 - lr: 8.8425e-05\n",
"Epoch 30/100\n",
"811/811 [==============================] - 31s 38ms/step - loss: 8699.8916 - mse: 33452.5859 - mae: 96.3121 - rmse: 152.1849 - custom_mape: 31.9938 - val_loss: 14860.2725 - val_mse: 26410.0449 - val_mae: 84.2833 - val_rmse: 135.7974 - val_custom_mape: 27.4504 - lr: 7.3026e-05\n",
"Epoch 31/100\n",
"810/811 [============================>.] - ETA: 0s - loss: 8397.3701 - mse: 32822.3984 - mae: 95.5427 - rmse: 150.7910 - custom_mape: 32.0949\n",
"Epoch 31 Detailed Metrics:\n",
"811/811 [==============================] - 32s 39ms/step - loss: 8389.3984 - mse: 32788.4531 - mae: 95.4662 - rmse: 150.6722 - custom_mape: 32.1090 - val_loss: 10881.0303 - val_mse: 21581.2246 - val_mae: 76.6546 - val_rmse: 122.9109 - val_custom_mape: 26.1594 - lr: 5.8271e-05\n",
"Epoch 32/100\n",
"811/811 [==============================] - 31s 38ms/step - loss: 8211.7285 - mse: 32299.0742 - mae: 94.7628 - rmse: 149.5487 - custom_mape: 31.8022 - val_loss: 10990.5146 - val_mse: 22554.5059 - val_mae: 78.0447 - val_rmse: 125.7095 - val_custom_mape: 26.2527 - lr: 4.4531e-05\n",
"Epoch 33/100\n",
"811/811 [==============================] - 31s 38ms/step - loss: 8059.6475 - mse: 31937.1406 - mae: 94.2104 - rmse: 148.7915 - custom_mape: 31.6591 - val_loss: 11965.4951 - val_mse: 19633.5859 - val_mae: 71.8940 - val_rmse: 115.6991 - val_custom_mape: 25.1729 - lr: 3.2155e-05\n",
"Epoch 34/100\n",
"811/811 [==============================] - 32s 39ms/step - loss: 7951.0010 - mse: 31709.4746 - mae: 93.8289 - rmse: 148.3072 - custom_mape: 31.4630 - val_loss: 9540.8096 - val_mse: 22911.6699 - val_mae: 78.2621 - val_rmse: 125.1414 - val_custom_mape: 26.4563 - lr: 2.1455e-05\n",
"Epoch 35/100\n",
"811/811 [==============================] - 32s 39ms/step - loss: 7870.2021 - mse: 31553.3457 - mae: 93.6221 - rmse: 147.9300 - custom_mape: 31.4443 - val_loss: 9422.6035 - val_mse: 21434.2637 - val_mae: 75.5224 - val_rmse: 120.7919 - val_custom_mape: 25.9513 - lr: 1.2703e-05\n",
"Epoch 36/100\n",
"810/811 [============================>.] - ETA: 0s - loss: 7791.0630 - mse: 31464.9941 - mae: 93.5448 - rmse: 147.9198 - custom_mape: 31.4216\n",
"Epoch 36 Detailed Metrics:\n",
"811/811 [==============================] - 32s 39ms/step - loss: 7783.9956 - mse: 31433.4629 - mae: 93.4737 - rmse: 147.8126 - custom_mape: 31.4435 - val_loss: 9728.4277 - val_mse: 23398.5430 - val_mae: 78.7421 - val_rmse: 126.2052 - val_custom_mape: 26.5261 - lr: 6.1193e-06\n",
"Epoch 37/100\n",
"811/811 [==============================] - 31s 38ms/step - loss: 7782.7549 - mse: 31406.9688 - mae: 93.3864 - rmse: 147.6053 - custom_mape: 31.3862 - val_loss: 9560.6436 - val_mse: 23029.3730 - val_mae: 78.1451 - val_rmse: 125.1727 - val_custom_mape: 26.4319 - lr: 1.8714e-06\n",
"Epoch 38/100\n",
"811/811 [==============================] - 31s 38ms/step - loss: 7777.0708 - mse: 31382.8203 - mae: 93.4302 - rmse: 147.6423 - custom_mape: 31.4434 - val_loss: 9647.4736 - val_mse: 23123.4121 - val_mae: 78.2223 - val_rmse: 125.4518 - val_custom_mape: 26.4217 - lr: 6.6522e-08\n",
"Epoch 39/100\n",
"811/811 [==============================] - 31s 38ms/step - loss: 7725.5112 - mse: 31040.5840 - mae: 93.0916 - rmse: 147.1082 - custom_mape: 31.8782 - val_loss: 9582.8750 - val_mse: 20723.7246 - val_mae: 74.9037 - val_rmse: 119.4773 - val_custom_mape: 26.3673 - lr: 1.7698e-04\n",
"Epoch 40/100\n",
"810/811 [============================>.] - ETA: 0s - loss: 7263.8110 - mse: 30007.5918 - mae: 91.4642 - rmse: 144.8820 - custom_mape: 31.5126\n",
"Epoch 40: ReduceLROnPlateau reducing learning rate to 3.52531613316387e-05.\n",
"811/811 [==============================] - 31s 38ms/step - loss: 7262.0361 - mse: 29977.5000 - mae: 91.3955 - rmse: 144.7766 - custom_mape: 31.5394 - val_loss: 14648.0088 - val_mse: 20503.3223 - val_mae: 72.9793 - val_rmse: 118.3558 - val_custom_mape: 25.1001 - lr: 1.7627e-04\n",
"Epoch 41/100\n",
"810/811 [============================>.] - ETA: 0s - loss: 6973.3042 - mse: 28997.6914 - mae: 89.9694 - rmse: 142.9392 - custom_mape: 30.8228\n",
"Epoch 41 Detailed Metrics:\n",
"811/811 [==============================] - 31s 38ms/step - loss: 6969.2603 - mse: 28970.1289 - mae: 89.9065 - rmse: 142.8480 - custom_mape: 30.8349 - val_loss: 11942.8125 - val_mse: 15700.4219 - val_mae: 64.9745 - val_rmse: 107.5340 - val_custom_mape: 24.5915 - lr: 1.7500e-04\n",
"Epoch 42/100\n",
"811/811 [==============================] - 31s 39ms/step - loss: 6722.7314 - mse: 28121.0098 - mae: 88.7315 - rmse: 141.0947 - custom_mape: 30.9093 - val_loss: 18087.9434 - val_mse: 23490.2754 - val_mae: 77.7477 - val_rmse: 127.0767 - val_custom_mape: 26.3092 - lr: 1.7318e-04\n",
"Epoch 43/100\n",
"811/811 [==============================] - 31s 38ms/step - loss: 6352.7544 - mse: 27314.2441 - mae: 87.3129 - rmse: 139.6047 - custom_mape: 30.1676 - val_loss: 12681.6553 - val_mse: 17494.8359 - val_mae: 67.6718 - val_rmse: 111.1969 - val_custom_mape: 24.9519 - lr: 1.7083e-04\n",
"Epoch 44/100\n",
"811/811 [==============================] - 30s 37ms/step - loss: 6174.1055 - mse: 26661.8184 - mae: 86.5631 - rmse: 138.3531 - custom_mape: 30.2715 - val_loss: 9485.2715 - val_mse: 17080.8105 - val_mae: 68.2397 - val_rmse: 109.1803 - val_custom_mape: 24.5443 - lr: 1.6795e-04\n",
"Epoch 45/100\n",
"811/811 [==============================] - 31s 38ms/step - loss: 5928.2930 - mse: 25945.6465 - mae: 85.3553 - rmse: 136.5068 - custom_mape: 30.0199 - val_loss: 10805.3350 - val_mse: 12679.4893 - val_mae: 59.6128 - val_rmse: 95.3850 - val_custom_mape: 23.4863 - lr: 1.6457e-04\n",
"Epoch 46/100\n",
"810/811 [============================>.] - ETA: 0s - loss: 5771.2266 - mse: 25396.0840 - mae: 84.5208 - rmse: 135.4825 - custom_mape: 29.6018\n",
"Epoch 46 Detailed Metrics:\n",
"811/811 [==============================] - 31s 38ms/step - loss: 5771.6826 - mse: 25375.7852 - mae: 84.4771 - rmse: 135.4225 - custom_mape: 29.6105 - val_loss: 16886.9219 - val_mse: 15556.0742 - val_mae: 64.1053 - val_rmse: 103.2760 - val_custom_mape: 23.5403 - lr: 1.6071e-04\n",
"Epoch 47/100\n",
"811/811 [==============================] - ETA: 0s - loss: 5708.6367 - mse: 24972.6895 - mae: 83.7521 - rmse: 134.5005 - custom_mape: 29.4252\n",
"Epoch 47: ReduceLROnPlateau reducing learning rate to 3.127976669929922e-05.\n",
"811/811 [==============================] - 32s 39ms/step - loss: 5708.6367 - mse: 24972.6895 - mae: 83.7521 - rmse: 134.5005 - custom_mape: 29.4252 - val_loss: 19152.4121 - val_mse: 20032.2090 - val_mae: 72.7711 - val_rmse: 117.7244 - val_custom_mape: 24.8048 - lr: 1.5640e-04\n",
"Epoch 48/100\n",
"811/811 [==============================] - 31s 39ms/step - loss: 5571.7061 - mse: 24644.9062 - mae: 83.0004 - rmse: 133.9219 - custom_mape: 29.2346 - val_loss: 17331.9844 - val_mse: 16389.8301 - val_mae: 66.4118 - val_rmse: 105.8761 - val_custom_mape: 23.9444 - lr: 1.5165e-04\n",
"Epoch 49/100\n",
"811/811 [==============================] - 32s 39ms/step - loss: 5616.5620 - mse: 24360.8047 - mae: 82.9673 - rmse: 133.5276 - custom_mape: 29.4230 - val_loss: 35736.7578 - val_mse: 19179.0918 - val_mae: 70.1682 - val_rmse: 114.7201 - val_custom_mape: 25.1097 - lr: 1.4651e-04\n",
"Epoch 50/100\n",
"811/811 [==============================] - ETA: 0s - loss: 5390.3022 - mse: 24032.5449 - mae: 82.3451 - rmse: 132.8925 - custom_mape: 29.1358Restoring model weights from the end of the best epoch: 35.\n",
"811/811 [==============================] - 31s 38ms/step - loss: 5390.3022 - mse: 24032.5449 - mae: 82.3451 - rmse: 132.8925 - custom_mape: 29.1358 - val_loss: 13423.8428 - val_mse: 18049.5527 - val_mae: 67.9114 - val_rmse: 110.8442 - val_custom_mape: 23.8173 - lr: 1.4100e-04\n",
"Epoch 50: early stopping\n",
"\n",
"Training completed successfully!\n",
"\n",
"Final Model Performance:\n",
"Out of range predictions: 0 (0.00%)\n",
"MAPE: 25.97%\n",
"Predictions within ±10%: 50.91%\n",
"MAE: 75.52\n",
"RMSE: 146.40\n",
"\n",
"Training history plot saved as: 2024-11-20_18-26_training_history.png\n",
"Training history data saved as: 2024-11-20_18-26_training_history.csv\n",
"Final statistics saved as: 2024-11-20_18-26_training_stats.json\n",
"\n",
"Final Training Statistics:\n",
"Final Loss (train/val): 5390.3022/13423.8428\n",
"Final MAE (train/val): 82.3451/67.9114\n",
"Best validation loss: 9422.6035\n",
"Best validation MAE: 59.6128\n"
]
},
{
"data": {
"image/png": "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 truncated
"text/plain": [
"<Figure size 1200x400 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
], ],
"id": "8f346ed2fea89ac5"
},
{
"metadata": {},
"cell_type": "code",
"outputs": [],
"execution_count": null,
"source": [ "source": [
"# Model creation\n", "# Model creation\n",
"print(\"\\n2. Creating model...\")\n", "print(\"\\n2. Creating model...\")\n",
@@ -1699,59 +1147,14 @@
" batch_size=192,\n", " batch_size=192,\n",
" folder_name=folder_name\n", " folder_name=folder_name\n",
")" ")"
] ],
"id": "38a2ad01e7fd683c"
}, },
{ {
"cell_type": "code",
"execution_count": 7,
"id": "ad6226ea-ab01-47aa-9571-52ea9e654c01",
"metadata": {}, "metadata": {},
"outputs": [ "cell_type": "code",
{ "outputs": [],
"name": "stdout", "execution_count": null,
"output_type": "stream",
"text": [
"\n",
"5. Generating predictions...\n",
"811/811 [==============================] - 5s 6ms/step\n",
"\n",
"6. Evaluating model...\n",
"\n",
"Solar Radiation Prediction Metrics:\n",
"\n",
"Absolute Metrics:\n",
"MAE: 175.39 W/m²\n",
"RMSE: 313.03 W/m²\n",
"R² Score: -0.413\n",
"MAPE: 9983339.55%\n",
"\n",
"Percentage Accuracy:\n",
"Within ±5%: 46.6%\n",
"Within ±10%: 46.6%\n",
"Within ±20%: 46.6%\n",
"\n",
"Level Accuracy:\n",
"Level Accuracy: 68.7%\n",
"\n",
"Confusion Matrix for Radiation Levels:\n",
" Very Low Low Moderate High Very High Extreme\n",
"Very Low 0 0 0 0 0 10\n",
"Low 0 0 0 0 0 1827\n",
"Moderate 0 0 0 0 0 2861\n",
"High 0 0 0 0 0 2296\n",
"Very High 0 0 0 0 0 1131\n",
"Extreme 0 0 0 0 0 17808\n",
"\n",
"Plot saved as: 2024-11-20_18-26_radiation_analysis.png\n",
"\n",
"Error Statistics:\n",
"Mean error: -175.370\n",
"Error standard deviation: 259.295\n",
"Median error: -12.000\n",
"95th percentile absolute error: 773.000\n"
]
}
],
"source": [ "source": [
"print(\"\\n5. Generating predictions...\")\n", "print(\"\\n5. Generating predictions...\")\n",
"predictions = model.predict(X_test_seq)\n", "predictions = model.predict(X_test_seq)\n",
@@ -1782,30 +1185,14 @@
" 'out_of_range_predictions': int(np.sum((predictions < 0) | (predictions > 11)))\n", " 'out_of_range_predictions': int(np.sum((predictions < 0) | (predictions > 11)))\n",
" }\n", " }\n",
"}" "}"
] ],
"id": "d9d0c8e71043aa2e"
}, },
{ {
"cell_type": "code",
"execution_count": 9,
"id": "2c42461d-b189-4dc0-81da-4eb4879b9135",
"metadata": {}, "metadata": {},
"outputs": [ "cell_type": "code",
{ "outputs": [],
"name": "stdout", "execution_count": null,
"output_type": "stream",
"text": [
"\n",
"7. Predicting missing data...\n",
"7122/7122 [==============================] - 42s 6ms/step\n",
"\n",
"8. Integrating predictions into original dataset...\n",
"Added 227879 predictions to dataset\n",
"Rows with solar radiation after integration: 357615\n",
"\n",
"Training completed successfully!\n"
]
}
],
"source": [ "source": [
"print(\"\\n7. Predicting missing data...\")\n", "print(\"\\n7. Predicting missing data...\")\n",
"to_predict_predictions = model.predict(X_to_predict_seq)\n", "to_predict_predictions = model.predict(X_to_predict_seq)\n",
@@ -1824,53 +1211,15 @@
" 'max_predicted_solarradiation': float(to_predict_predictions.max()),\n", " 'max_predicted_solarradiation': float(to_predict_predictions.max()),\n",
"}\n", "}\n",
"\n", "\n",
"print(\"\\nTraining completed successfully!\")\n", "print(\"\\nTraining completed successfully!\")"
"\n",
"tf.keras.backend.clear_session()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "08fd4208-0afb-4bf1-bdef-b10b4065fe55",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Plot saved as: 2024-11-20_18-26_error_analysis.png\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAHqCAYAAADrpwd3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAADSKklEQVR4nOzdeXhMZ//H8c9kj8hiSyKkEftalFbtW4hSte9qS9GW2qtULVUttdVW1NNa+jRKrfVYUilaLaldW4qilNKgDUlRZDm/P/LLMLKIbJPl/bquc8mcc899vmcSc8985sx9TIZhGAIAAAAAAAAAAInYWLsAAAAAAAAAAACyK0J0AAAAAAAAAACSQYgOAAAAAAAAAEAyCNEBAAAAAAAAAEgGIToAAAAAAAAAAMkgRAcAAAAAAAAAIBmE6AAAAAAAAAAAJIMQHQAAAAAAAACAZBCiAwAAAAAAAACQDEJ04DGUKFFCffr0Md/+5ptvZDKZ9M0332TYPkwmkyZNmpRh/SGxh3+PmeX8+fMymUxavny5eV2fPn2UP3/+TN93Av6eACBz8Pwar1GjRmrUqJH5dlJjn7U9XGNW6dOnj0qUKJHl+wUAIDux1ng4adIkmUymLN8vci9CdOQYy5cvl8lkMi9OTk4qW7asBg8erCtXrli7vMeydevWbPfGO2GASW4JDw+3dolJatSokblGGxsbubm5qVy5cnrxxRcVGhqaYfvJjr+zBNm5NgBIjYULF8pkMqlWrVpp7uPy5cuaNGmSjh49mnGFZXMJH+YnLPb29ipZsqR69eql3377zdrlPZa9e/dq0qRJunHjRpbv+/DhwzKZTHrrrbeSbXP69GmZTCaNGDEiCysDgNzl4ff0Dy8//PCDtUvM9m7cuCEnJyeZTCadOHEizf0sXLgw23zgffXqVdnZ2alnz57Jtvnnn3/k7Oys9u3bZ2FlgCU7axcAPK7JkyfL399fd+7c0ffff69FixZp69atOnbsmPLly5eltTRo0ED//vuvHBwcHut+W7du1Ycffphk8Pnvv//Kzs56/zUXLVqU5JnSHh4eWV9MKhUvXlxTp06VJN26dUtnzpzR+vXr9dlnn6lz58767LPPZG9vb25/6tQp2dg83meIKf3OkuPn56d///3XYt+ZITv/PQFAagQHB6tEiRLav3+/zpw5o9KlSz92H5cvX9bbb7+tEiVKqFq1ahlfZDY2ZMgQPf3004qOjtbhw4e1ZMkSbdmyRT///LN8fHyytJa0jn179+7V22+/rT59+mT5a46nnnpK5cuX1+eff64pU6Yk2WblypWSlOIbfABA6iS8p39YWsb/vGbNmjUymUzy9vZWcHBwsuPWoyxcuFCFCxfOkm9oP4qnp6eaNWumL7/8Urdv304y11m/fr3u3LnDOAyrIllBjvPcc8+pZs2akqSXXnpJhQoV0uzZs/Xll1+qW7duSd7n1q1bcnFxyfBabGxs5OTklKF9ZnR/j6tjx44qXLjwY93nzp07cnBwSDKYTu9jHxcXp3v37qX4uLi7uycaTKdNm6YhQ4Zo4cKFKlGihN5//33zNkdHxzTXkxoxMTGKi4uTg4OD1X+f1t4/ADzKuXPntHfvXq1fv14DBw5UcHCwJk6caO2ycpT69eurY8eOkqS+ffuqbNmyGjJkiFasWKGxY8cmeZ/Mem2U8G3BnKZHjx4aP368fvjhBz377LOJtn/++ecqX768nnrqKStUBwC5y4Pv6VPrwfdYD0vvmGYYhu7cuSNnZ+c095FVPvvsM7Vs2VJ+fn5auXJlmkP07KZHjx4KCQnRpk2b1LVr10TbV65cKXd3d7Vq1coK1QHxmM4FOV6TJk0kxb8Jl+7POX327Fm1bNlSrq6u6tGjh6T4QHbOnDmqVKmSnJyc5OXlpYEDB+r69esWfRqGoSlTpqh48eLKly+fGjdurOPHjyfad3Jzou/bt08tW7ZUgQIF5OLioieffFJz58411/fhhx9KksVX1xIkNcfqkSNH9Nxzz8nNzU358+dX06ZNE33VLeGrcXv27NGIESNUpEgRubi4qF27drp27dpjPqrJSzjmVatW6a233lKxYsWUL18+RUVFpfjY37p1SyNHjpSvr68cHR1Vrlw5zZw5U4ZhWPRvMpk0ePBgBQcHq1KlSnJ0dFRISMhj12lra6t58+apYsWKWrBggSIjI83bHp4TPTo6Wm+//bbKlCkjJycnFSpUSPXq1TNPB5PS7yxh7teZM2dqzpw5KlWqlBwdHfXLL7+kOC/sb7/9psDAQLm4uMjHx0eTJ0+2eCyS+9t6uM+c/vcEAMHBwSpQoIBatWqljh07Kjg4OMl2N27c0PDhw1WiRAk5OjqqePHi6tWrl/766y998803evrppyXFh8gJz4UJz5XJXQvj4bmy7927pwkTJqhGjRpyd3eXi4uL6tevr127dj32cV25ckV2dnZ6++23E207deqUTCaTFixYIOnR49Djevi1UcKUbb/88ou6d++uAgUKqF69eub2n332mWrUqCFnZ2cVLFhQXbt21cWLFxP1u2TJEpUqVUrOzs565pln9N133yVqk9zYd/LkSXXu3FlFihSRs7OzypUrp3Hjxpnre/311yVJ/v7+5t/f+fPnM6XGpCS8Xkk44/xBhw4d0qlTp8xtvvzyS7Vq1Uo+Pj5ydHRUqVKl9M477yg2NjbFfaR2bE9w8uRJdezYUQULFpSTk5Nq1qypTZs2WbTJ6L8dAMgOUnqPldKYFhMTo3feecfcvkSJEnrzzTd19+5di/5LlCih559/Xl999ZVq1qwpZ2dnffTRR5Kk0NBQ1atXTx4eHsqfP7/KlSunN998M8V6K1eurMaNGydaHxcXp2LFipk/6JakVatWqUaNGnJ1dZWbm5uqVKlizgoe5cKFC/ruu+/UtWtXde3a1XwiQlI+++wzPfPMM8qXL58KFCigBg0aaPv27ebjP378uL799lvzmJvweii5ecQT3h8+ODandTxMSrt27eTi4pLkOHz16lXt2LFDHTt2lKOjo7777jt16tRJTzzxhBwdHeXr66vhw4fr33//TXEfKb0/T+p986VLl9SvXz95eXnJ0dFRlSpV0tKlSxPdd/78+apUqZL5sa5Zs2aSx4GcjzPRkeOdPXtWklSoUCHzupiYGAUGBqpevXqaOXOm+etAAwcO1PLly9W3b18NGTJE586d04IFC3TkyBHt2bPH/NXjCRMmaMqUKWrZsqVatmypw4cPq3nz5rp3794j6wkNDdXzzz+vokWLaujQofL29taJEye0efNmDR06VAMHDtTly5cVGhqq//73v4/s7/jx46pfv77c3Nw0evRo2dvb66OPPlKjRo307bffJpo/9rXXXlOBAgU0ceJEnT9/XnPmzNHgwYO1evXqVD2eERERidbZ2dkl+mr1O++8IwcHB40aNUp37941nxGQ1GNvGIZeeOEF7dq1S0FBQapWrZq++uorvf7667p06ZI++OADi7537typL774QoMHD1bhwoXTfBESW1tbdevWTePHj9f333+f7KfWkyZN0tSpU/XSSy/pmWeeUVRUlA4ePKjDhw+rWbNmqfqdLVu2THfu3NGAAQPk6OioggULKi4uLsm2sbGxatGihZ599llNnz5dISEhmjhxomJiYjR58uTHOsbs/vcEAI8SHBys9u3by8HBQd26ddOiRYt04MABcyguSTdv3lT9+vV14sQJ9evXT0899ZT++usvbdq0SX/88YcqVKigyZMna8KECRowYIDq168vSapTp85j1RIVFaWPP/5Y3bp1U//+/fXPP//ok08+UWBgoPbv3/9Y08R4eXmpYcOG+uKLLxKdWb969WrZ2tqqU6dOkh49Dj2upF4bSVKnTp1UpkwZvffee+YPbt99912NHz9enTt31ksvvaRr165p/vz5atCggY4cOWIe/z/55BMNHDhQderU0bBhw/Tbb7/phRdeUMGCBeXr65tiPT/99JPq168ve3t7DRgwQCVKlNDZs2f1v//9T++++67at2+vX3/9VZ9//rk++OAD8zfiihQpkmU1+vv7q06dOvriiy/0wQcfyNbW1rwt4Y1w9+7dJcUHCfnz59eIESOUP39+7dy5UxMmTFBUVJRmzJjxqF9Pqhw/flx169ZVsWLFNGbMGLm4uOiLL75Q27ZttW7dOrVr105Sxv/tAEBWiIyM1F9//WWxzmQyJRq3knqPlSCpMe2ll17SihUr1LFjR40cOVL79u3T1KlTdeLECW3YsMGi71OnTqlbt24aOHCg+vfvr3Llyun48eN6/vnn9eSTT2ry5MlydHTUmTNntGfPnhSPp0uXLpo0aZLCw8Pl7e1tXv/999/r8uXL5jOrQ0ND1a1bNzVt2tT8TekTJ05oz549Gjp06CMft88//1wuLi56/vnn5ezsrFKlSik4ODjR6523335bkyZNUp06dTR58mQ5ODho37592rlzp5o3b645c+botddeU/78+c0faHt5eT1y/w/LyPHQxcVFbdq00dq1axUREWHxu169erViY2PNH2avWbNGt2/f1iuvvKJChQpp//79mj9/vv744w+tWbPmsY8jKVeuXNGzzz5rPsmvSJEi2rZtm4KCghQVFaVhw4ZJkv7zn/9oyJAh6tixo4YOHao7d+7op59+0r59+8yvG5CLGEAOsWzZMkOS8fXXXxvXrl0zLl68aKxatcooVKiQ4ezsbPzxxx+GYRhG7969DUnGmDFjLO7/3XffGZKM4OBgi/UhISEW669evWo4ODgYrVq1MuLi4szt3nzzTUOS0bt3b/O6Xbt2GZKMXbt2GYZhGDExMYa/v7/h5+dnXL9+3WI/D/Y1aNAgI7n/fpKMiRMnmm+3bdvWcHBwMM6ePWted/nyZcPV1dVo0KBBoscnICDAYl/Dhw83bG1tjRs3biS5vwQTJ040JCW5lCtXLtExlyxZ0rh9+7ZFH8k99hs3bjQkGVOLine truncated
"text/plain": [
"<Figure size 1500x500 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Error Statistics:\n",
"MAE: 175.3912\n",
"MSE: 97988.2659\n",
"RMSE: 313.0308\n",
"Mean error: -175.3699\n",
"Error std: 259.2946\n",
"Predictions within ±0.5: 46.6%\n",
"Predictions within ±1.0: 47.0%\n",
"Predictions within ±1.5: 47.0%\n",
"Predictions within ±2.0: 47.2%\n"
]
}
], ],
"id": "de61df609e8053a2"
},
{
"metadata": {},
"cell_type": "code",
"outputs": [],
"execution_count": null,
"source": [ "source": [
"def plot_error_analysis(y_true, y_pred, folder_name=None):\n", "def plot_error_analysis(y_true, y_pred, folder_name=None):\n",
" \"\"\"\n", " \"\"\"\n",
@@ -1964,15 +1313,8 @@
"\n", "\n",
"# Example usage\n", "# Example usage\n",
"plot_error_analysis(y_test, predictions, folder_name=folder_name)" "plot_error_analysis(y_test, predictions, folder_name=folder_name)"
] ],
}, "id": "8a924adc70eb2f30"
{
"cell_type": "code",
"execution_count": null,
"id": "f982c92c-ba99-4df6-b3c8-df92426679db",
"metadata": {},
"outputs": [],
"source": []
} }
], ],
"metadata": { "metadata": {
File diff suppressed because it is too large. Load diff